如何用c# 实现网站数据的抓取?

八爪鱼·云采集网络爬虫软件

www.bazhuayu.com

如何用c# 实现网站数据的抓取?

如何用c# 实现网站数据的抓取?首先大家需要清楚一点的是:任何网站的页面,无论是php、jsp、aspx这些动态页面还是用后台程序生成的静态页面都是可以在浏览器中查看其HTML源文件的。

所以当你要开发数据采集程序的时候,你必须先对你试图采集的网站的前台页面结构(HTML)要有所了解。

当你对要采集数据的网站里的HTML源文件内容十分熟悉之后,剩下程序上的事情就很好办了。因为C#对Web站点进行数据采集的原理就在于“把你要采集的页面HTML源文件下载下来,分析其中HTML代码然后抓取你需要的数据,最后将这些数据保存到本地文件”。

一般情况下基本的抓取思路是: 1)页面源文件下载 2)页面分析采集

页面分析就是要将网页源文件中某个特定或是唯一的字符(串)作为抓取点,以这个抓取点作为开端来截取你想要的页面上的数据。

以博客园为列,比方说我要采集博客园首页上列出来的文章的标题和链接,就必须以\作为抓取点,以此展开来抓取文章的标题和链接。

3)数据保存

八爪鱼·云采集网络爬虫软件

www.bazhuayu.com

当你把需要的数据从网页截取下来后,将数据在程序中稍加整理保存到本地文件(或插入到自己本地的数据库中)。这样整个采集工作就算搞一段落了。

下面我们来聊一下具体应该如何抓取:

1、抓取一般内容

需要三个类:WebRequest、WebResponse、StreamReader 所需命名空间:System.Net、System.IO 核心代码:

WebRequest 类的 Create 为静态方法,参数为要抓取的网页的网址; Encoding 指定编码,Encoding 中有属性 ASCII、UTF32、UTF8 等全球通用的编码,但没有 gb2312 这个编码属性,所以我们使用 GetEncoding 获得 gb2312 编码。

八爪鱼·云采集网络爬虫软件

www.bazhuayu.com

2、抓取图片或其它二进制文件(如文件)

需要四个类:WebRequest、WebResponse、Stream、FileStream 所需命名空间:System.Net、System.IO 核心代码:用Stream读取

3、抓取网页内容 POST方式

在抓取网页时,有时候,需要将某些数据通过 Post 的方式发送到服务器,将以下代码添加在网页抓取的程序中,以实现将用户名和密码 Post 到服务器:

八爪鱼·云采集网络爬虫软件

www.bazhuayu.com

4、ASP.NET 抓取网页内容-防止重定向

在抓取网页时,成功登录服务器应用系统后,应用系统可能会通过 Response.Redirect 将网页进行重定向,如果不需要响应这个重定向,那么,我们就不要把 reader.ReadToEnd() 给 Response.Write 出来,就可以了。

5、ASP.NET 抓取网页内容-保持登录状态

利用 Post 数据成功登录服务器应用系统后,就可以抓取需要登录的页面了,那么我们就可能需要在多个 Request 间保持登录状态。

八爪鱼·云采集网络爬虫软件

www.bazhuayu.com

首先,我们要使用 HttpWebRequest,而不是 WebRequest。 与 WebRequest 相比,变化的代码是:

注意:HttpWebRequest.Create 返回的类型仍是 WebRequest,所以要转化一下。 其次,使用 CookieContainer。

这样 request 和 request2 之间就使用了相同的 Session,如果 request 登录了,那么 request2 也是登录状态。

最后,如何在不同的页面间使用同一个 CookieContainer。

要在不同的页面间使用同一个 CookieContainer,只有把 CookieContainer 加入 Session。

如:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4