本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/802721
欢迎加入Heritrix群(QQ): 109148319 , 10447185
开博客以及建立Heritrix 群有一段时间了(这里谢谢大家的关注),这篇博客将整理这段时间所遇到的问题.同时由于自己从今年5月份开始就不怎么接触Heritrix,很多东西开始遗忘(不过里面思想没忘),同时目前的工作也没有必要接触Heritrix,所以不可能向之前写博客那样从源码的角度去考虑了.这里就起个抛砖引玉的作用吧,希望能有点用.这篇博客会不断更新,如有其他问题,请留言......
相关问题:
1.Heritrix散列30个DNS后就结束
2.如何用Heritrix实现增量抓取,也就是抓取更新了的网页
1.Heritrix散列30个DNS后就结束:
总体来说,是30个抓取线程去获取网站数据发生交通堵塞,导致无法获取URL内容,最后都卡死在那里.
没读源码真的很难知道这个原因,好好的URL,比如 http://www.heritrix.com ,为什么变成dns:heritrix.com。而且跑上30个Heririx就停止?这里先说下为什么会 http://www.heritrix.com 会变成dns:heritrix.com.大家知道一个URL地址过去都需要通过DNS服务器获取该URL所在的地址,Heritrix也做了这个事情。所以dns:heritrix.com是去进行DNS解析,同时Heritrix会将DNS信息缓存(缓存到BDB数据库),以便下次 http://www.heritrix.com/a.html 这样的URL(同一个host下)无需再去进行类似的解析,提高效率。同时Heritrix还可以配置缓存的DNS信息的有效期,默认为6小时,见order.xml中的<integer name="ip-validity-duration-seconds">86400</integer>接下来说下为什么爬上30个dns:heritrix.com Heritrix就停止。我想你应该改了Heritrix的队列分配策略,也就是order.xml中的<string name="queue-assignmentpolicy">org.archive.crawler.frontier.HostnameQueueAssignmentPolicy</string>
默认的HostnameQueueAssignmentPolicy是以host作为抓取队列分组依据,通一个host(如以上的 www.heritrix.com 和 www.heritrix.com/a.html )下的URL将会分配进同一个抓取队列.Heritrix通过抓取队列来实现对抓取速度的控制,以防止对一个host的过度抓取(后果很严重,可能对方会封你IP)。正常的HostnameQueueAssignmentPolicy,当你从这个host抓取完一个URL后会计算这个URL抓取的速度,同时和你所配置的抓取速度队列,如果过快,则计算该URl所需要抓取的正常时间,让其等待抓取过快的时间差值(比如按照正常配置,你每秒带宽是50K,而计算出来你抓取的是100K,则会让其等待(100-50)*抓取时间秒).则该抓取队列在该段时间内不会再排放URL,如此做到控制抓取速度.而当你采用第三方的队列分配策略,很有可能打破这种机制,比如网上流行的ELHASH,的确可以提高抓取速度.但当你种子比较少的时候,多个线程一窝蜂的去抓取少量种子就很有可能交通堵塞了,最终是大家都获取不了网页内容,如此也就抽取不出新的URL。如此一来,散列30个DNS:url后Heritrix就自动结束了.
2.如何用Heritrix实现增量抓取,也就是抓取更新了的网页
Heritrix从设计角度是一次性整站复制,所以要实现增量抓取需要改动代码。但Heritrix自身保存了判断是否增量抓取的各种参数,所以可以通过这些参数来判断是否需要增量抓取。我判断增量抓取会经过以下4个环节:
1)判断URl是否抓取过,如抓取过跳到2)继续判断
2)从URl的http-header里获取该URl的last-modified,context-length,http-status-code,判断是否有更新.如果有更新则表示需要更新之前的网页.但很多URL可能没有这个值,则跳转到3)
3)该URl内容的MD5值是否更新,如果有更新,则很有可能需要抓取.但很多时候更新了也并不能代表该URl已经更新过,比如里面有广告,广告内容变化.所以进行第四步
4)相似度分析,对他们的网页内容进行相似度分析,这个是最准确的但也是最复杂最耗性能的一步.我目前没有实现.
有了以上4步,我们再来看如何在Heritrix里实现.
更多技术文章、感悟、分享、勾搭,请用微信扫描:
相关推荐
heritrix学习源码和资料
Heritrix的文件结构分析 各个类说明 配置文件order_xml介绍....
自己学习网络爬虫时知识所学习的资料,希望可以和大家分享,并能对大家有所帮助,希望能共同进步。
Lucene 2.0+Heritrix 源码 csdn 开发自己的搜索引擎——Lucene 2.0+Heritrix
heritrix1.14.4的源码包,包含heritrix1.14.4.zip和heritrix1.14.4-src.zip。heritrix是一种开源的网络爬虫,用于爬去互联网中的网页。如何配置和使用heritrix爬虫,请移步:...
Heritrix1.14.4安装配置使用包,其中包括源码包。 具体使用方法可参考:http://blog.csdn.net/baalhuo/article/details/52189425
heritrix3.2源码包 https://github.com/xiamizy/heritrix-package 下载编译后的文件
heritrix1.14.4源码+项目
Heritrix+Lucene+Dwr 搜索引擎框架包 多次开发中使用的 据对可用
从网上找得应该是中文Heritrix源码最详细的说明了。折腾了好久,没有把网页打成chm,只能打个exe用用。
Lucene Heritrix 搜索 Lucene Heritrix csdn
开发自己的搜索引擎lucene+heritrix(第2版)(ch13-ch15源码)
heritrix-1.14.4爬虫框架及源码
自己学习网络爬虫时知识所学习的资料,希望可以和大家分享,并能对大家有所帮助,希望能共同进步。
heritrix-3.2.0的源码,有意学习爬虫的童鞋,可以研究下源代码!
Heritrix User Manual https://webarchive.jira.com/wiki/display/Heritrix/Heritrix3 Heritrix3(或简称H3)指Heritrix的3.0发布。 目前官方的Heritrix 3.0.0版已经发布(2009年12月)。 后续的发行H3将是3.0.1...
heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置
按照这个步骤安装绝对会让你安装成功的。步骤非常的清晰。Heritrix是一个不错的选择。网络爬虫,更快更好的帮你捕捉到你想要的网页
Heritrix爬虫源码,包含使用heritrix对太平洋手机网进行爬取
在/Heritrix1/src/org/archive/crawler/Heritrix.java启动之后,访问https://localhost:8089登录admin密码admin直接用