网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息
- 分布式网络爬虫工具,如Nutch
- Java网络爬虫工具,如Crawler4j、WebMagic、WebCollector。
- 非Java网络爬虫工具,如Scrapy(基于Python语言开发)
工作原理
- 网络爬虫是一种按照一定的规则,自动地抓取Web信息的程序或者脚本。Web网络爬虫可以自动采集所有其能够访问到的页面内容,为搜索引擎和大数据分析提供数据来源。从功能上来讲,爬虫一般有数据采集、处理和存储3部分功能。
- 网络爬虫系统通过网页中的超链接信息不断获得网络上的其他网页。网络爬虫从一个或若干个初始网页的RUL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
- 网络爬虫系统一般会选择一些比较重要的、出度(网页中链出的超链接数)较大的网站的URL作为种子URL集合。网络爬虫系统以这些种子集合作为初始URL,开始数据的抓取。因为网页中含有链接信息,通过已有网页的URL会得到一些新的URL。可以把网页之间的指向结构视为一个森林,每个种子URL对应的网页是森林中的一棵树的节点,这样网络爬虫系统就可以根据广度优先搜索算法或者深度优先搜索算法遍历所有的网页。由于深度优先搜索算法可能会使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集。
- 网络爬虫系统首先将种子URL放入下载队列,并简单地从队首取出一个URL下载其对应的网页,得到网页的内容并将其存储后,经过解析网页中的链接信息可以得到一些新的URL。其次,根据一定的网页分析算法过滤掉与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。最后,取出一个URL,对其对应的网页进行下载,然后再解析,如此反复进行,直到遍历了整个网络或者满足某种条件后才会停止下来。
工作流程
- 首先选取一部分种子URL。
- 将这些URL放入待抓取URL队列
- 从待抓取URL队列中取出待抓取URL,解析DNS,得到主机IP地址,并将URL对应的网页下载下来,存储到已下载网页库中。此外,将这些URL放进已抓取URL队列。
- 分析已抓取URL队列中的URL,分析其中的其他URL,并且将这些URL放入待抓取URL队列,从而进入下一个循环。
抓取策略
网络爬虫策略用到的基本概念
-
网页间关系模型
从互联网的结构来看,网页之间通过数量不等的超链接相互连接,形成一个彼此关联、庞大复杂的有向图。如果将网页看成一个节点,而将网页中指向其他网页的链接看成是这个节点指向其他节点的边,那么我们很容易将整个互联网上的网页建模成一个有向图。理论上,通过遍历算法遍历该图,可以访问到互联网上几乎所有的网页。 -
网页分类
从爬虫的角度对互联网进行划分,可以将互联网的所有页面分为5个部分:已下载未过期网页、已下载已过期网页、待下载网页、可知网页和不可知网页。
通用网络爬虫
通用网络爬虫又称全网爬虫,爬行对象从一些种子URL扩展到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。
-
深度优先策略
深度优先策略是指网络爬虫会从起始页开始,一个链接一个链接地跟踪下去,直到不能再深入为止。网络爬虫在完成一个爬行分支后返回到上一链接节点进一步搜索其他链接。当所有链接遍历完后,爬行任务结束。这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。 -
广度优先策略
广度优先策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层的页面爬行完毕后,爬虫再深入下一层继续爬行。
聚焦网络爬虫
聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关的页面的网络爬虫。
1)基于内容评价的爬行策略
De Bra将文本相似度的计算方法引入到网络爬虫中,提出了Fish Search算法。该算法将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关的页面,其局限性在于无法评价页面与主题相关度的大小。
Herseovic对Fish Search算法进行了改进,提出了Shark Search算法,即利用空间向量模型计算页面与主题的相关度大小。采用基于连续值计算链接价值的方法,不但可以计算出哪些抓取的链接和主题相关,还可以得到相关度的量化大小。
2)基于链接结构评价的爬行策略
PageRank算法的基本原理是,如果一个网页多次被引用,则可能是很重要的网页,如果一个网页没有被多次引用,但是被重要的网页引用,也有可能是重要的网页。一个网页的重要性被平均地传递到它所引用的网页上。
3)基于增强学习的爬行策略
将增强学习引入聚焦爬虫,利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链接的访问顺序。
4)基于语境图的爬行策略
通过建立语境图学习网页之间的相关度的爬行策略,该策略可训练一个机器学习系统,通过该系统可计算当前页面到相关Web页面的距离,距离近的页面中的链接优先访问。
增量式网络爬虫
增量式网络爬虫是指对已下载网页采取增量式更新并且只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。