文章采集程序(开发爬虫程序首先要先得到Web页面的HTML代码,微软)

优采云 发布时间: 2022-04-10 04:17

  文章采集程序(开发爬虫程序首先要先得到Web页面的HTML代码,微软)

  要开发爬虫程序,首先要获取网页的HTML代码。微软为我们提供了一种非常方便的方法。我们可以使用WebClient或者WebRequest、HttpWebResponse轻松获取网站页面的HTML代码。终于提供了源代码下载。

  第一个例子是使用WebClient获取HTML代码。

   private string getHTML(string strUrl,Encoding encoding)

{

Uri url = new Uri(strUrl);

WebClient wc = new WebClient();

wc.Encoding = encoding;

Stream s = wc.OpenRead(url);

StreamReader sr = new StreamReader(s, encoding);

return sr.ReadToEnd();

}

  调用时需要知道页面的编码方式。后面给大家举个例子,不需要知道编码方式。先看调用的方法:

  string html = getHTML("http://www.baidu.com", Encoding.GetEncoding("GB2312"));

  下一点是重点。使用 WebRequest 和 HttpWebResponse 获取页面的 HTML 代码,只需要传入一个 URL。编码方式可由程序分析。虽然不完美,但大部分网站都可以识别出来。

  先用WebRequest初始化一个真实的列,然后用GetResponse请求得到的response返回给HttpWebResponse,通过response.StatusDescription,可以得到编码方式的代码,得到我们需要的网页的编码方式通过分析,最后阅读了HTML代码。就是这样。

   private void getHTMLbyWebRequest(string strUrl)

{

Encoding encoding = System.Text.Encoding.Default;

WebRequest request = WebRequest.Create(strUrl);

request.Credentials = CredentialCache.DefaultCredentials;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusDescription.ToUpper() == "OK")

{

switch (response.CharacterSet.ToLower())

{

case "gbk":

encoding = Encoding.GetEncoding("GBK");//貌似用GB2312就可以

break;

case "gb2312":

encoding = Encoding.GetEncoding("GB2312");

break;

case "utf-8":

encoding = Encoding.UTF8;

break;

case "big5":

encoding = Encoding.GetEncoding("Big5");

break;

case "iso-8859-1":

encoding = Encoding.UTF8;//ISO-8859-1的编码用UTF-8处理,致少优酷的是这种方法没有乱码

break;

default:

encoding = Encoding.UTF8;//如果分析不出来就用的UTF-8

break;

}

this.Literal1.Text = "Lenght:" + response.ContentLength.ToString() + "

CharacterSet:" + response.CharacterSet + "

Headers:" + response.Headers + "

";

Stream dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream, encoding);

string responseFromServer = reader.ReadToEnd();

this.TextBox2.Text = responseFromServer;

FindLink(responseFromServer);

this.TextBox2.Text = ClearHtml(responseFromServer);

reader.Close();

dataStream.Close();

response.Close();

}

else

{

this.TextBox2.Text = "Error";

}

}

  这样,网页的HTML代码就已经获取到了,接下来就是对链接进行处理,过滤掉无用的HTML代码,保留文本内容。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线