c#抓取网页数据(Web站点进行数据采集程序的基本流程和流程图 )
优采云 发布时间: 2021-12-23 03:27c#抓取网页数据(Web站点进行数据采集程序的基本流程和流程图
)
首先大家要清楚:网站的任何页面,无论是php、jsp、aspx等动态页面,还是后台程序生成的静态页面,都可以在浏览器。
所以当你要开发数据采集程序时,首先要了解网站你试图采集的首页结构(HTML)。
一旦您非常熟悉网站 中需要采集 数据的HTML 源文件的内容,程序的其余部分将很容易处理。因为C#在网站采集上执行数据,原理是“下载你要采集的页面的HTML源文件,分析HTML代码然后抓取你需要的数据,最后将数据保存到本地文件”。
基本流程如下图所示:
1.页面源文件下载
首先引用 System.Net 命名空间
使用System.Net;
还需要引用
使用System.Text;
使用System.IO;
复制代码
引用后实例化一个 WebClient 对象
privateWebClientwc=newWebClient();
调用 DownloadData 方法从指定网页的源文件中下载一组 BYTE 数据,然后将 BYTE 数组转换为字符串。
//下载页面源文件并转换为UTF8编码格式的STRING
stringmainData=Encoding.UTF8.GetString(wc.DownloadData(string.Format("你要的是采集的网页地址")));
复制代码
或者也可以调用DownloadFile方法,先将源文件下载到本地再读取其字符串
//将网页源文件下载到本地
wc.DownloadFile("你想要的网页地址采集","保存源文件的本地文件路径");
//读取下载的源文件HTML格式字符串
stringmainData=File.ReadAllText("保存源文件的本地文件路径",Encoding.UTF8);
复制代码
通过网页HTML格式字符串,您可以分析网页采集,抓取您需要的内容。
2.页面分析采集
页面分析就是将网页源文件中的某个特定的或唯一的字符(字符串)作为抓点,并以此抓点为起点,截取你想要的页面上的数据。
以博客园为专栏。比如我要在博客园首页列出文章的标题和链接,就必须用“
代码:
//经过”
mainData=mainData.Substring(mainData.IndexOf("")+26);
//获取文章页面的链接地址
stringarticleAddr=mainData.Substring(0,mainData.IndexOf("\""));
//获取文章的标题
stringarticleTitle=mainData.Substring(mainData.IndexOf("target=\"_blank\">")+16,
mainData.IndexOf("")-mainData.IndexOf("target=\"_blank\">")-16);
复制代码
注意:当你要采集的网页前台的HTML格式发生变化时,作为抓点的字符通道也会相应变化,否则什么都没有采集
3.数据保存
从网页截取到自己需要的数据后,将程序中的数据保存到本地文件中(或者插入到自己的本地数据库中)。这样,整个采集作品就会是一个段落。
//输出数据到本地文件
File.AppendAllText(CreateFolderIfNot(Settings.Default.OutPath)+articleTitle+".txt",
文章数据,
编码.UTF8);
复制代码
另外附上我自己写的采集博客园首页文章的小程序代码。本程序的作用是发布到所有博客园首页文章采集下。
下载链接:CnBlogCollector.rar
当然,如果博客园前端页面的格式调整了,程序的采集功能肯定会失效。只能自己重新调整程序才能继续采集,哈哈。. .
程序效果如下: