由于工作原因,需要在一个app里面加上时事热点的功能,然而不可能每天手动向数据库内添加新闻,所以第一想到的就是爬虫,由于平时工作都是c#居多,所以选用了度娘推荐的Html Agility Pack
首先是喜闻乐见的工具包下载
这里我是下载了htmlagilitypack.1.8.7.nupkg的包
这里是如何在VS里安装nupkg包的方法
安装完毕后,在代码最上方,using HtmlAgilityPack;就完事了
首先这是百度风云榜的界面,我们真正需要的信息只有热搜排行榜里的超链接标题(共50个)百度风云榜实时热点
首先,我们要把整个网站的HTML代码获取下来,接着才能筛选出我们需要的内容
代码如下
这里的url的值是:http://top.baidu.com/buzz?b=1&fr=topindex
编码百度用的是gbk,encoding的值是Encoding.GetEncoding(“gbk”)
public static string GetHtml(string url, Encoding encoding)//網址,編碼格式
{
string html = string.Empty;
try
{
string urlStr = url; //設定要獲取的地址
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(urlStr); //建立HttpWebRequest對象
request.Timeout = 60000; //定義服務器超時時間
~~//这一段是可以不要的,除非你们需要上网账号
WebProxy proxy = new WebProxy(); //定義一個網關對象
proxy.Address = new Uri("http://xx.xx.xx.x:xxxx"); //網關服務器:端口
proxy.Credentials = new NetworkCredential("userId", "password"); //用戶名,密碼
request.UseDefaultCredentials = true; //啟用網關認証
request.Proxy = proxy; //設置網關
~~
if ((HttpWebResponse)request.GetResponse()== null)//如果該網站不存在或被刪除,則返回空html代碼
{
return "";
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //取得回應
Stream stream = response.GetResponseStream(); //得到回應的流對象
StreamReader reader = new StreamReader(stream, encoding); //以xxx編碼讀取流
html = reader.ReadToEnd();
}
catch(Exception ex) {
return "";
throw ex;
}
//sr.Close();
return html;
}
现在用debug运行一下项目,看看html的值是什么
可以看到,这些就是这个网址整个的HTML代码
之后的工作就是,在这些HTML代码中筛选出我们需要的东西,下一章再细讲