C# 实现对网站数据的采集和抓取

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

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

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

基本流程如下图所示:

1.页面源文件下载

首先引用System.Net命名空间

using System.Net;

此外还需引用

using System.Text;
using System.IO;

引用完后实例化一个WebClient对象

private WebClient wc = new WebClient();

调用DownloadData方法将指定网页的源文件下载一组BYTE数据,然后将BYTE数组转为字符串。

//下载页面源文件并将其转换成UTF8编码格式的STRING
string mainData = Encoding.UTF8.GetString(wc.DownloadData(string.Format("你要采集的网页地址")));

或则也可以调用DownloadFile方法,先将源文件下载到本地然后再读取其字符串

//下载网页源文件到本地
wc.DownloadFile("你要采集的网页URL","保存源文件的本地文件路径");
//读取下载下来的源文件HTML格式的字符串
string mainData = File.ReadAllText("保存源文件的本地文件路径",Encoding.UTF8);

有了网页HTML格式字符串,就可以对网页分析采集并抓取你所需要的内容了。

2.页面分析采集

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

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

//以"<a class=\"titlelnk\" href=\""作为抓取点开始采集
mainData=mainData.Substring(mainData.IndexOf("<a class=\"titlelnk\" href=\"") + 26);

//获取文章页面的链接地址
string articleAddr = mainData.Substring(0,mainData.IndexOf("\""));

//获取文章标题
string articleTitle = mainData.Substring(mainData.IndexOf("target=\"_blank\">") + 16,
                                               mainData.IndexOf("</a>") - mainData.IndexOf("target=\"_blank\">") - 16);

注意:当你要采集的网页前台HTML格式变了之后,作为抓取点的字符窜也因做相应地改变,否则是采集不到任何东西的

3.数据保存

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

//输出数据到本地文件
File.AppendAllText(CreateFolderIfNot(Settings.Default.OutPath) + articleTitle + ".txt",
                                       articleData,
                                       Encoding.UTF8);

程序效果如下:

via:http://www.cnblogs.com/youuuu/archive/2011/06/17/2083714.html

时间: 2024-11-08 22:35:15

C# 实现对网站数据的采集和抓取的相关文章

java抓取网页数据,登录之后抓取数据。

最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一个jsoup的jar包,我用的1.6.0..下载地址为:http://pan.baidu.com/s/1mgqOuHa 1,获取网页内容(核心代码,技术有限没封装). 2,登录之后抓取网页数据(如何在请求中携带cookie). 3,获取网站的ajax请求方法(返回json). 以上这三点我就用一个类

【转载】从网站内因分析影响爬虫抓取

一个网站只有爬虫抓取了,才能被收录.有快照.有排名.所以搜索引擎爬虫对网站的抓取情况直接决定了一个网站seo的成败.今天笔者就从网站内部本身来分析一下那些因素将影响到搜索引擎爬虫的爬取: 1.网站速度影响爬虫访问 机房—DNS服务器—CDN—出口带宽--硬件—操作系统—服务器软件—程序 机房的位置:最好选择靠近爬虫的线路 Dns服务器:热门.稳定(推荐dnspod) CDN:在做网站日志分析时候记得算进去 出口带宽:避免与大流量的网站同机房 硬件:在经济允许下使用配置高的 操作系统:推荐linu

使用php蓝天采集器抓取今日头条ajax的文章内容

今日头条的数据都是ajax加载显示的,按照正常的url是抓取不到数据的,需要分析出加载出址,我们以 https://www.toutiao.com/search/?keyword=%E6%96%B0%E9%97%BB 为例来采集列表的文章 用谷歌浏览器打开链接,右键点击"审查"在控制台切换至network并点击XHR,这样就可以过滤图片.文件等等不必要的请求只看页面内容的请求 由于页面是ajax加载的,所以将页面拉至最底部,会自动加载出更多文章,这时候控制台抓取到的链接就是我们真正需要

数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单

编者按:互联网上有浩瀚的数据资源,要想抓取这些数据就离不开爬虫.鉴于网上免费开源的爬虫框架多如牛毛,很多人认为爬虫定是非常简单的事情.但是如果你要定期上规模地准确抓取各种大型网站的数据却是一项艰巨的挑战,其中包括网站的格式经常会变.架构必须能灵活伸缩应对规模变化同时要保持性能,与此同时还要挫败网站反机器人的手段以及维护数据质量.流行的Python爬虫框架Scrapy开发者Scrapinghub分享了他们抓取一千亿个网页后的经验之谈. 现在爬虫技术似乎是很容易的事情,但这种看法是很有迷惑性的.开源

【python小随笔】python 解析xml数据的新手大坑&gt;&gt;抓取多重标签,遍历各标签的数据

xml文档: <GetMatchingProductResult ASIN="B071LF9R6G" status="Success">...</GetMatchingProductResult> <GetMatchingProductResult ASIN="B0714BP3H4" status="Success">...</GetMatchingProductResult>

大数据抓取采集框架(摘抄至http://blog.jobbole.com/46673/)

摘抄至http://blog.jobbole.com/46673/ 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如何快速把不规则页面结构化并存储.如何满足越来越多的数据采集还要在有限时间内采集.这篇文章结合我们自身项目经验谈一下. 我们来看一下作为人是怎么获取网页数据的呢? 1.打开浏览器,输入网址url访问页面内容.2.复制页面内容的标题.作者.内容.3.存储到文本文件或者excel. 从技术角度来说整个过程

爬虫原理与数据抓取-----(了解)通用爬虫和聚焦爬虫

通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 通用搜索引擎(Search Engine)工作原理 通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果. 第一步:

使用Apache Flume抓取数据(1)

使用Apache Flume抓取数据,怎么来抓取呢?不过,在了解这个问题之前,我们必须明确ApacheFlume是什么? 一.什么是Apache Flume Apache Flume是用于数据采集的高性能系统 ,名字来源于原始的近乎实时的日志数据采集工具,现在广泛用于任何流事件数据的采集,支持从很多数据源聚合数据到HDFS. 最初由Cloudera开发 ,在2011年贡献给了Apache基金会 ,在2012年变成了Apache的顶级项目,Flume OG升级换代成了Flume NG. Flume

scrapy-splash抓取动态数据例子六

一.介绍 本例子用scrapy-splash抓取中广互联网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信息 三.数据抓取 针对上面的网站信息,来进行抓取 1.首先抓取信息列表 抓取代码:sels = site.xpath('//li[@class="content_list clearfix"]') 2.抓取标题 首先列表页面,根据标题和日期来判断是否自己需要的资讯,如果是,就今日到资讯对应