四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2174|回复: 0
打印 上一主题 下一主题

C#获取网页内容的三种方式

[复制链接]
  • TA的每日心情
    开心
    2018-7-4 09:08
  • 97

    主题

    392

    帖子

    6095

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    6095
    跳转到指定楼层
    楼主
    发表于 2016-11-5 08:16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    原文地址:http://www.cnblogs.com/ceachy/articles/CSharp_Retrive_Page_Document.html

    搜索网络,发现C#通常有三种方法获取网页内容,使用WebClient、WebBrowser或者HttpWebRequest/HttpWebResponse。。。
    方法一:使用WebClient (引用自:http://fbljava.blog.163.com/blog/static/265211742008712105145244/
    1. static void Main(string[] args)
    2. {
    3.     try {
    4.         WebClient MyWebClient = new WebClient();     
    5.         MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
    6.         Byte[] pageData = MyWebClient.DownloadData(“[url]http://www.163.com[/url]”); //从指定网站下载数据
    7.         string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句            
    8.         //string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
    9.         Console.WriteLine(pageHtml);//在控制台输入获取的内容
    10.         using (StreamWriter sw = new StreamWriter("c:\\test\\ouput.html"))//将获取的内容写入文本
    11.         {
    12.             sw.Write(pageHtml);
    13.         }
    14.         Console.ReadLine(); //让控制台暂停,否则一闪而过了            
    15.     }
    16.     catch(WebException webEx) {
    17.         Console.WriteLine(webEx.Message.ToString());
    18.     }
    19. }
    复制代码

    方法二:使用WebBrowser (引用自:http://topic.csdn.net/u/20091225/14/4ea221cd-4c1e-4931-a6db-1fd4ee7398ef.html
    1. WebBrowser web = new WebBrowser();
    2. web.Navigate("[url=http://www.xjflcp.com/ssc/]http://www.xjflcp.com/ssc/[/url]");
    3. web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
    4. void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    5.         {
    6.             WebBrowser web = (WebBrowser)sender;
    7.             HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("Table");
    8.             foreach (HtmlElement item in ElementCollection)
    9.             {
    10.                  File.AppendAllText("Kaijiang_xj.txt", item.InnerText);
    11.             }
    12.         }
    复制代码

    方法三:使用HttpWebRequest/HttpWebResponse (引用自:http://hi.baidu.com/onlyafar/blog/item/7ac4c6bf92d4810019d81f98.html
    1. HttpWebRequest httpReq;
    2. HttpWebResponse httpResp;
    3. string strBuff = "";
    4. char[] cbuffer = new char[256];
    5. int byteRead = 0;
    6. string filename = @"c:\log.txt";
    7. ///定义写入流操作
    8. public void WriteStream()
    9. {
    10. Uri httpURL = new Uri(txtURL.Text);
    11. ///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
    12.       httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
    13. ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
    14.    httpResp = (HttpWebResponse) httpReq.GetResponse();
    15. ///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
    16.      ///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
    17. Stream respStream = httpResp.GetResponseStream();
    18. ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
    19. StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
    20. StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);
    21. byteRead = respStreamReader.Read(cbuffer,0,256);
    22. while (byteRead != 0)
    23. {
    24. string strResp = new string(cbuffer,0,byteRead);
    25.                   strBuff = strBuff + strResp;
    26.                   byteRead = respStreamReader.Read(cbuffer,0,256);
    27. }
    28. respStream.Close();
    29. txtHTML.Text = strBuff;
    30. }
    复制代码


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-6 23:52 , Processed in 1.078125 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表