北京大学计算机网络体系结构课程
Heritrix 研究报告
Heritrix安装使用代码分析及网站链接分析
北大深圳研究生院信息工程学院
组长:闫应威
组员:霍佳森胡钊王超
题目:Heritrix 研究试验报告
摘要:
Heritrix 是一款开源的由Java写成的网络爬虫项目,通过对项目进行安装使用能够了解网络爬虫的一般结构并了解爬虫的各种机制的实现方法,通过对下载网站进行连接分析可以系统掌握pagerank算法并理解网络的一般结构。研究报告主要介绍对Heritrix的研究方法,并对实验结果进行分析。通过介绍Heritrix的使用方法以求用简便的方式加速抓取并输出抓取网站URL之间的图连接关系。
简介:
报告主要针对作业内容进行试验方法上的研究与实验结果上的分析,首先在方法中介绍爬虫安装使用上的技巧,然后介绍如何通过修改代码得到获取网站的连接关系图,最后在实验结果中回答连接关系的数据以及Heritrix的两种机制的实现方式。在连接关系的分析上主要通过PageRank算法来实现对整个拓扑结构的分析。在分析方法上面主要使用了五种方法来提高Heritrix的抓取速度。分析代码的过程中主要参照了Heritrix的参考文档,查找到相应机制的实现类内容。通过对Heritrix的研究与使用可以帮助我们更深入的了解爬虫的实现原理,对以后研究爬虫的各方面性质提供很有意义的参考。通过对获取URL连接的分析有助于了解整个web图结构的性质。
试验使用方法:
1 启动多线程更快
Heritrix采用HostnameQueueAssignmentPolicy来进行对URL处理。url队列以hostname为key,所有相同key的url放置在同一个队列里面,也就是说同一个host下面的所有url都放在一个队列里面,当线程获取url时候,会将该队列放置到同步池中。所以添加一个自己的类,并将其添加到运行项中:
首先添加public class ELFHashQueueAssignmentPolicy extends QueueAssignmentPolicy
() 。
2
序号
配置名
理想值
说明
1
<long name="max-time-sec">0</long>
3
抓取一个网页的最大时间(秒),超过了该时间则不抓取,0表示没有这个限制
2
<integer name="max-toe-threads">3</integer>
50
抓取的线程数,表示有多少个线程去抓取,一般50足够了
3
<float name="delay-factor"></float>
如果从某个队列抓取一个URL花费N秒,则下次从该队列获取URL去抓取则要延迟N*该值
4
<integer name="max-delay-ms">20000</integer>
2000
队列的最大延迟时间,单位为毫秒
5
<integer name="min-delay-ms">2000</integer>
0
队列的最小延迟时间,单位为毫秒
6
<integer name="max-retries">30</integer>
5
URL抓取失败可以重试的次数,重试次数越少越好
7
<integer name="target-ready-backlog">50</integer>
200
准备队列中待抓取的URL个数,这些URL无需经过队列等待可以立刻去抓取
3修改代码解决乱码
4 只抓去文本文件
解决方法就是添加一个rule,过虑掉非文本类型的文件从而节省抓取时间。
5 修改ExtractorHTML 输出URL图
因为最终进行统计与PageRank算法迭代需要输入的数据为图的邻接表表示结构,因此在抓取过程中能过同时输出URL的图结构将有助于数据统计工作的完成。首先,定义输出的格式为如下:
URL1 URL2 URL4 URL7 URLi *****
URL1为当前的页面URL地址,之后为当前页面解析出来的URL地址,以上面结构排列一行为一个邻接表的一项,将所有URL按照上述格式输出就得到了所需的URL图结构。
然后,对Heritrix中ExtractorHTML进行修改, 具体修改如下:
函数:public void extract(CrawlURI curi)
中添加:
在函数:protected void processLink(Crawl
大学计算机基础知识试题及答案 来自淘豆网www.taodocs.com转载请标明出处.