网络爬虫的基本功能是下载指定的页面,并抽取页面中指定的数据内容,从功能实现上来说,主要包含网页下载和数据抽取,但在实际应用中,为了让爬虫采集的速度更快、易于管理、方便使用等方面的需求,就得使爬虫具有扩展性、把需要人工维护的一些工作都由爬虫来完成,所以,涉及到的功能模块可能就更多。在这里以“分布式网络爬虫架构简介”中介绍的集中Server-Client模式爬虫架构为例,介绍分布式网络爬虫主要的功能模块(注:不同之处,欢迎交流),这里把分布式网络爬虫的主要功能模块划分为五块,如下图所示。
任务管理
采集任务是指对同一个站点同种页面数据采集类型的归类,涉及采集的站点、采集种子信息、采集逻辑等相关信息,任务管理主要包括这些信息的管理和采集状态的管理,任务信息管理也称为任务编辑,就是将任务相关的信息Build成一些符合规范,而且可由系统执行采集的基本单位。采集状态管理包括采集任务分发(由哪些采集终端执行),任务执行状态回收(任务是否执行成功),异常执行任务的识别及重试(为什么失败已经如何修复)等。
资源管理
资源包括系统运行的硬件资源,也包括运行中需要的一些软件资源;硬件资源的管理包括服务器状态维护(比如有服务器挂掉了,终端就断开选择连接正常的服务器)、采集终端状态管理(比如有终端挂掉了,服务器就不在分配任务到故障的采集终端)、网络线路管理(比如ADSL重拨)等。软件资源的管理包括IP资源(比如动态IP池)的管理、代理IP的管理、网站登录帐号的管理等。这些硬件资源是用于执行采集系统,保障系统的正常运行;而软件资源主要辅助采集系统更好执行采集任务(比如解决网页下载的屏蔽问题)。
内容下载
该功能主要涉及请求提交方式(GET、POST等),需要提交的内容,例如URL、User-Agent、Referer URL、Cookie等,各个站点,根据需要增加信息的信息。另外就是下载的实现方式,是选择已有的工具,比如Webkit、HttpClient、URLConnection等,还是自己通过socket等基础网络编程自己去实现。关于技术方面,还涉及到多线程或多进程的处理等。
数据抽取
数据抽取在网络爬虫的研究中一直算是一个难点——如何在更少的人为干预下处理新资源,以及适应网站的改版等变化,提升系统的自适应能力。在大部分的实际应用中,自适应的技术使用的还是有限制的,这里就不涉及了。通常的数据抽取是通过下载内容的基本标准结构为基础来处理,比如html、xml、pdf、excel等,根据需求到指定的位置获取指定的内容信息,使用的技术比如正则表达式、xpath、E4X等。
数据回收
数据回收指收集采集的内容并进行存储,采集的内容可以是抽取后的信息,也可以下载的原始网页、文档等。这里可能涉及到数据库、大数据分析等技术,具体的要根据实际使用来选取。
注:转载,微信号:MangCrawler。
,