网络数据采集技术:Java网络爬虫实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 网络爬虫分类

网络爬虫按照系统结构和实现技术,大致可分为4类,即通用网络爬虫、聚焦网络爬虫、增量网络爬虫和深层网络爬虫。

通用网络爬虫:又称为全网网络爬虫,其在采集数据时,由部分种子URL扩展到整个网络的全部页面,主要应用于搜索引擎数据的采集。这类网络爬虫的数据采集范围较广,数据采集量巨大,对数据采集的速度和存储空间有较高的要求,通常需要深度遍历网站的资源。例如,Apache的子项目Nutch便是一个高效的通用网络爬虫框架,其使用分布式的方式采集数据。有兴趣详细学习Nutch框架使用的读者,可参考书籍Web Crawling and Data Mining with Apache Nutch

聚焦网络爬虫:又称为主题网络爬虫,是指选择性地采集那些与预先定义好的主题相关的页面。相比于通用网络爬虫,聚焦网络爬虫采集的网页资源少,主要用于满足特定人群对特定领域信息的需求。在聚焦网络爬虫中,需要设计过滤策略,即过滤与所定主题无关的页面。我们可以将用户查询的关键词作为主题,包含该关键词的页面视为主题相关,如图1.2所示。

图1.2 采集关键词相关网页

增量网络爬虫:是指对已下载网页采取增量式更新,只采集新产生的或者已经发生变化网页的爬虫。增量网络爬虫能够在一定程度上保证所爬行的页面是尽可能新的页面,历史已经采集过的页面不重复采集。增量网络爬虫避免了重复采集数据,可以减小时间和空间上的耗费。针对小规模特定网站的数据采集,在设计网络爬虫时,可构建一个基于时间戳判断是否更新的数据库,通过判断时间戳的先后,判断程序是否继续采集,同时更新数据库中的时间戳信息。图1.3为某论坛的帖子的页面,如果需要每隔一段时间采集最新发布的帖子,便可以通过对比当前时间(如2018年9月25日)和数据库中封存的上次数据采集的时间(如2018年8月25日),进而确定采集到论坛第几页便终止后面页数的数据采集。

图1.3 增量网络爬虫案例

深度网络爬虫:即Deep Web爬虫,指对大部分内容不能通过静态链接获取,只有用户提交表单信息才能获取Web页面的爬虫。