获取网页数据的时候,会存在页面或页面部分内容是异步加载的情况,这时候通过常用的请求数据方法可能会不完整,这个时候就可以选择使用webbrowser
当你对要采集数据的网站里的HTML源文件内容十分熟悉之后,剩下程序上的事情就很好办了。因为C#对Web站点进行数据采集其原理就在于“把你要采集的页面HTML源文件下载下来,分析其中HTML代码然后抓取你需要的数据,最后将这些数据保存到本地文件”。
当然手动在浏览器选择UTF-8也可以,但是咱不能每次打开都这样干吧。于是到网站找到一款软件叫:TelePort乱码修复工具(siteRepair-v2.0),经过测试可以解决乱码的问题,这款工具也会清除一些无效的链接和html符号等。
使用下面源代码获取我们选择的内容:
1 protected void Enter_Click(object sender, EventArgs e)
2 {
3 WebClient we = new WebClient(); //主要使用WebClient类
4 byte[] myDataBuffer;
5 myDataBuffer = we.DownloadData(txtURL.Text); //该方法返回的是 字节数组,所以需要定义一个byte[]
6 string download = Encoding.Default.GetString(myDataBuffer); //对下载的数据进行编码
7
8
9 //通过查询源代码,获取某两个值之间的新闻内容
10 int startIndex = download.IndexOf("<!-- publish_helper name=要闻-新闻 p_id=1 t_id=850 d_id=1 -->");
11 int endIndex = download.IndexOf("<!-- publish_helper name=要闻-财经 p_id=30 t_id=98 d_id=1 -->");
12
13 string temp = download.Substring(startIndex, endIndex - startIndex + 1); //截取新闻内容
14
15 lblMessage.Text = temp;//显示所截取的新闻内容
16 }
|