您的位置:首页 > 代理IP资讯
发布时间:2019-11-26 16:20:48
ip地址修改器基于Heritrix的增量式爬虫设计与实现

 引言

互联网中信息量的快速增长使得增量搜集技术成为网上信息获取的一种有效手段,它可以避免因重复搜集未曾变化的网页而带来的时间和资源上的浪费。Heritrix是一个优秀的互联网信息采集工具,高可扩展性,页面抓取能力强,用户可以方便地对其定制开发。然而,Heritrix是一个通用网络爬虫,ip地址修改器,ip代理适合一次性整站复制,并不适合网页的增量抓取。在Heritrix 1.14.4中,有一个实验性的增量功能模块,可以实现部分增量搜集功能,但在实际应用时存在诸多不足,而最新发布的 Heritrix 3.x,已将这个功能模块去掉。笔者针对Heritrix在增量抓取功能方面的不足,为其设计并实现一套全新的增量功能框架,这一框架能很好地满足实际应用的需求。

 技术背景

2.1 Heritrix

Heritrix项目是一个开源的、可扩展的Web 爬虫项目,基于Java语言实现。利用其出色的可扩展性,开发者可以扩展它的各个组件,ip地址修改器,ip代理来实现自己的抓取逻辑。Heritrix项目始于2003 年,目前有Heritrix 1.14.4Heritrix 3.x两个主要版本。

2.1.1 H eritrix主框架

Heritrix 3.x的框架主要分为EngineComponent两大部分。Engine是爬虫的主要功能模块,负责实际的抓取任务。Component可以认为是爬虫的Web用户接口,用户可以通过

Web界面对爬虫进行管理。

Heritrix 3.x Engine中的爬虫任务框架主要有中央处理器CrawlController、链接工厂

 

 

国家973计划项目(No. 2013CB329102);国家自然科学基金资助项目(No. 61372120612710196110111961121001);长江学者和创新团队发展计划资助(No. IRT1049);教育部科学技术研究重点(重大)项目资助(No. MCM20130310);北京高等学校青年英才计划项目(No. YETP0473

97

 

Frontier和处理器链Processor Chain等。任务运行的基本流程如图1所示。

Processor ChainFrontier里获取 CrawlURIProcessor Chain中的处理器链依次对CrawlURI进行处理ip地址修改器,ip代理,抓取页面,分析页面,存储页面,并将解析到的新链接加入Frontier队列,不断循环。

2.1.2 H eritrix Processor C hain Heritrix 3.x中,Processor Chain 主要由3个处理链组成:FetchChain

DispositionChainCandidateChain

FetchChain主要负责页面的抓取与解析工作,CandidateChain负责URI的过滤,决定哪些URI可以被加入FrontierDispositionChain负责页面的存储与URI的后续处理工作,并将经过CandidateChain 过滤后的URI加入Frontier

ProcessorChain类,每个Chain内部又由若干个处理器Processor组成。如FetchC hain中的主要Processor F etchD N SF etchH T T P

ExtractorHTML等。Heritrix中所有处理器均继承自Processor类,Heritrix提供了丰富的处理器供用户选择,用户可以根据实际需求添加或删除已有Processor,也可扩展自己的Processor 加入系统。

Heritrix 3.x使用了Spring技术,用户通过修改配置文件crawler- beans.xml 就可以调整Processor Chain的处理器设置,Heritrix 3.x在初始化运行时会读取配置文件,自动装填各个处理器链。

2.1.3 H eritrix Frontier

FrontierHeritrix的链接工厂,负责CrawlUR I的存储与调度。 Frontier是最顶层的接口,向下还有

AbstractFrontierWorkQueueFrontier

BdbFrontier等。Frontier可以有很多的WorkQueue,ip地址修改器,ip代理它们是真正的URI 队列。Heritrix根据相应的策略将抓取到的C rawlU R I分配到不同的 WorkQueue,又根据不同的策略从

WorkQueue中取出CrawlUR I供给

Processor ChainCrawlURIFrontier Processor C hain之间以及各个 Processor之间的连接纽带。

Heritrix 3.x默认最底层的Queue BdbMultipleWorkQueuesHeritrix

3.x运行过程中的CrawlUR I全部存到

Berkley DB数据库。

2.2 增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。在互联网信息快速增长的今天,增量式网络爬虫是获取网络信息的一种十分高效的工具。设计角度适合一次性整站复制,不适合对网页增量抓取。Heritrix 1.14.4提供了部分增量爬取功能。

3.1 Heritrix 1.14.4增量原理

H eri tri x 1.14.4提供了一个

AdaptiveRevisitingFrontier。这个Frontier 可以根据设定好的间隔时间重复访问所有解析到的URI。根据Heritrix的官方文档,这是一个实验性的Frontier,正在开发中,并没有被充分测试过。

Heritrix 1.14.4org.archive.crawler. extractor包提供了两个Processor,分别是H T T PC ontentD i gest

ChangeEvaluatorHTTPContentDigest 可以对每次抓取到的Web页面计算Hash 摘要,存到CrawlUR IcontentDigest 成员变量,C hangeE valuator负责对 每 次 计 算 的 摘 要 进 行 比 较 。 当

AdaptiveR evisitingFrontierUR I重访时,ChangeEvaluator就可以根据 HttpContentDigest产生的新的网页摘要以及上一次抓取生成的旧的摘要的对比,判断网页是否发生了变化。org. archive.crawler.postprocessor包提供了ip地址修改器,ip代理

WaitEvaluator,这个模块的作用是根据 ChangeEvaluator的比较结果动态调节网页的抓取频率。

3.2 Heritrix 1.14.4增量功能不足 Heritrix 1.14.4的增量功能比较粗

 

98   TELECOMMUNICATIONS TECHNOLOGY/ 2014· 9

页面解析模块MyExtractor负责对下载的页面进行解析。当解析的页面属于Index目录页时,MyExtractor 会根据在本地数据库记录的增量信息判断解析到的URL是否是新的链接,如果是则加入Frontier,不是则直接丢掉。因此,MyExtractor模块可以保证加入队列的链接都是新链接。当 MyExtractor遇到的页面是Content内容页时,则直接对页面内容进行解析,将解析后的内容存入本地数据库。

Heritrix 3.x提供了多种页面存储方式,如网页镜像MirrorWriterProcessorARC压缩格式ARCWriterProcessor。数据存储模块MyWriter不仅可以让用户使用Heritrix 3.x已有存储方式保存页面,还提供了MySQLHBase两种新的数据存储方式供用户使用。任务扫尾模块负责一次爬虫任务结束时的数据清理与计算工作。增量统计模块负责统计本次任务下载网页的总量和增量。 4.3 增量模块设计细节

如图4所示ip地址修改器,ip代理,增量模块MyCrawler

Heritrix 3.1.1原有运行框架基础上,添加了一系列子控制模块,保证增量任务的可靠运行。首先,MyDeamon 模块控制C rawl Job周期性运行, MyProperties负责增量任务关键参数的配置。在Processor Chain部分,MyProxy FetchHT T P处理器提供IP代理。

MyExtractor负责页面的解析,MyWriter 负责页面存储,MyProcJob负责任务扫尾,MyStatistic负责增量任务统计。在

Frontier部分,MyFrontier负责CrawlURI 的队列分配策略。最后,MyCommon MyXmlJob负责爬虫的多任务管理。

 结束语

基于Heritrix 3.1.1设计实现的增量框架与Heritrix 1.14.4的实验性增量功能相比,具有更好的稳定性与实用性,并且能够再好地解决Index型网页 的增量抓取问题,尤其更适用于垂直搜索领域。目前,笔者所设计的这个增量式网络爬虫已监测网站几十个,包括新浪微博和水木论坛等,稳定运行时间已接近一年,增量采集大量网页,为用户提供大量有价值的数据,在实际应用中取得良好效果。

参考文献

[1]孟涛,王继民,闫宏飞.网页变化与增量搜集技术.软件学报,2006(5)

[2]Gordon Mohr et al.Introduction to

Heritrix.Accessed May 2005

[3]Heritrix官网.http:/ / crawler.archive.org

[4]孙立伟,何国辉,吴礼发.网络爬虫技术的研究.电脑知识与技术,2010(5)

[5]王大伟,张岩,曾皓.一个预测网页变化的增量式更新模型.网络与通信,2009(2- 3)

[6]杨颂,欧阳柳波.基于Heritrix的面向电

子商务网站增量爬虫研究.软件导刊,2010(7)

如对本文内容有任何观点或评论,请发ip地址修改器,ip代理

 

SRG研究表明:VoLTE商用业务较Skype3G及互联网电话业务更具优势

阿尔卡特朗讯近日公布的一项独立调研成果表明:与 3G电路域(CS)语音和互联网电话业务及Skype软件相比,商用VoL TE技术能够提供更具竞争力的服务。分析发现, VoLTE 用户能体验到更出色的语音质量、更快的连接速度,并且他们的移动设备耗电也大幅减少。如果没有VoL TE,智能手机只能使用速度较慢的3G 网络连接语音通话,而采用 VoLTE技术,4G LTE运营商则能够在提供更快速的移动宽带的同时,通过任意互联的网络、设备和应用提供基于IP的通信,如高清语音、高清视频、在线状态和发送消息等。

SRG20146- 7月开展该项研究,评估VoLTE性能并与3G CS语音和S kype进行对比。该项研究是在商用的LTE 网络上进行的,该网络由阿尔卡特朗讯提供无线接入网、核心网络以及包括VoL TE主要功能在内的IMSIP多媒体子系统)。各项测试在日常条件下进行,包括了固定/移动位置、强/弱无线信号覆盖以及各种网络负载和多任务环境。报告针对多个参数进行评估,包括通话建立时间、通话可靠性、通话质量、网络资源需求和对电池寿命的影响。 施耐德电气创新能效管理技术推动我国商业地产的绿色生产力

施耐德电气媒体学院再度开讲,进一步介绍施耐德电气与望京SOHO中国节能中心项目的深度合作,施耐德电气创新能效管理技术助力望京SOHO再度升级,该项目总体获得节能量36%, 碳排放低于北京市同类建筑标准44%

在新型城镇化建设、绿色经济发展及国家宏观调控布局的大背景下,ip地址修改器,ip代理向具有更高生产力的绿色建筑战略转型,已成为以SOHO中国为代表的、具有前瞻理念的商业地产领袖们提升核心竞争力的关键所在。20131018日,“SOHO中国节能中心” 首度向公众开放,这是施耐德电气参与研发的业内首个商业综合体能源管理平台,标志着SOHO中国和施耐德电气探索楼宇能效管理战略合作的开始。 随着合作的进行,施耐德电气为SOHO中国提供的节能增效解决方案的更多详情也随之一一呈现。

施耐德电气认为,实现可持续节能增效,不能仅靠高能效设备,而需本着可持续发展MRV体系,即可测量、可报告、可核证三原则,通过数字化手段和专家服务,提高客户能源效率和可持续发展的能力。

101

 

糙,并不能满足实际应用的需求。

首先,根据研究发现,现在很多网站有大量的Index类型的网页。如果要对这类网站进行增量采集,只需对 Index型的目录页进行增量监测,判断页面中是否有新的链接,将新链接指向的内容抓取下来,并不需要对所有页面进行对比。针对Index型网站的数据采集,Heritrix 1.14.4提供的增量功能效率比较低,

其次,AdaptiveRevisitingFrontier 针对某个URI的重访功能只在一个爬虫任务周期内有效,当爬虫任务结束或异常中止,Frontier中所有URI的相关信息都会被清除,增量任务必须重新开始,重新计算每个URI的增量数据,所以抓取任务的安全性和稳定性不够,无法对网站进行长期增量监测。

 Heritrix增量模块设计与实现

的种子列表、线程、队列和过滤规则等,它们独立运行,不会互相干扰。所有的Crawl Job建立在一个共同的 Heritrix Engine上,由Heritrix Engine管控所有任务的运行。

当用户想抓取网页内容时,先通过Heritrix EngineWeb界面创建一个 Crawl Job,然后对Crawl Job进行基本配置,如种子文件和任务线程数等。配置完成后,依次点击管理界面上的 BuildLaunch按键,任务即加载并开始运行,Heritrix不停地从网络上下载页面到本地。当下载任务完成后, Crawl Job会自动Terminate。用户点击 Teardown,任务就会被卸载,任务相

关的临时信息会被清除。

以上描述的就是Heritrix中的一个 Crawl Job周期,而增量抓取的本质就是对URI周期性地重访。笔者设计的 Heritirx增量模块功能就是控制Crawl Job不停地周期性运行,对种子列表重访问,增量抓取网页内容。

4.1 增量模块整体框架

系统整体框架如图2所示,ip地址修改器,ip代理其中 MyCrawler就是设计的Heritrix增量模块。它是Heritrix EngineCrawl Job的中间层,向下负责配合Heritrix Engine 的管理工作,向上负责控制Crawl Job 的运行。MyCrawler在整个增量任务运行过程中起到承上启下的作用。

4.2 增量模块功能设计

4.2.1 MyC rawler多任务管理

针对Heritrix增量功能方面的不足,笔者在Heritrix 3.1.1基础上,设计并实现了一个全新的增量功能模块,既能有效利用Heritrix原有强大的下载功能,又能满足实际增量采集任务的需求。

Heritrix将一个爬取任务定义为一个Crawl Job。每个Crawl Job有自己

 

2 增量模块框架


3 增量模块功能

如图3所示,增量模块有一个多任务管理子模块。Heritrix中多个Crawl Job可以同时运行,为配合这一机制,增量模块设计了一套数据结构,用于存储每个任务的增量参数与信息。多任务管理模块依照Heritrix 3.x的任务

 

框架,建立了MyEngineMyCrawljob 模式。MyEngine里存着Heritrix Engine

的引用,并有一HashMap<String, MyCrawl Job>型的成员变量jobs,保存每个Crawl Job对应的MyCrawl jobMyCrawljob保存每个Crawl Job的增量参数与信息,并提供增量任务运行过程中要用到的各种方法。

4.2.2 MyC rawler任务配置

MyCrawl job有三个重要的成员变量:CrawlJob job是对应的真实爬虫任务Crawl Job的引用,通过Job可以直接控制爬虫任务;String jobName是任务名;File jobDir是任务的文件目录。这三个成员变量在增量任务运行的各个阶段都会用到。任务配置模块ip地址修改器,ip代理

MyProperties负责读取JobDir中的配置文件crawljob.properties,设置爬虫任务的抓取周期、队列数等。

4.2.3 MyC rawler守护线程

MyCrawljob中另一重要功能模块是守护线程MyDaemon,它是增量功能的核心模块,负责控制爬虫任务周期性运行。当一个Crawl JobBuild Launch后,MyDaemon也随之被创建并在后台运行。MyDaemon不断地监测Crawl Job的运行状态,当检测到

JobURI队列为空时,则认为Crawl Job爬取完成,任务结束。MyDaemon 会通过Crawl Job的引用job,关掉任务,并将任务自动Teardown。此后, MyDaemon会根据设定好的间隔周期,进入休眠状态。当休眠结束, MyDaemon会执行job.launch()语句,将任务重新加载并运行,Crawl Job就进入了下一轮抓取周期。

4.2.4 MyC rawler处理器链

模拟登录模块和IP代理模块位于爬虫处理链的Fetch阶段。Heritrix 抓取的网页,有些内容需要账号登录后才能获得,模拟登录模块为用户提供了一个接口,当遇到需要登录的网页,用户只需要实现这个接口,返回网站的Cookie赋给FetchHTTPHttpClient,就可以成功抓取网页。

IP代理模块负责给HttpClient提供ip地址修改器,ip代理,这个模块维护了一个代理资源池,HttpClient每次请求页面时都会从资源池里拿到一个IP代理。代理模块可以保证每次HTTP请求所使用的IP代理都不相同,所有代理循环使用。

 


上一篇 下一篇