heritrix3.1.0增量爬取

感谢这三篇文章

https://webarchive.jira.com/wiki/display/Heritrix/Duplication+Reduction+Processors  这个是官网的文章

http://blog.sina.com.cn/s/blog_5f54f0be0101hdep.html

http://blog.csdn.net/historyasamirror/article/details/6706174

然后在得到摘要时我觉得应该去掉某些字符,例如不停变换的当前时间,这也是在一篇文章中看到的,地址忘了。

在crawler-beans.xml中加入

<span style="font-size:12px;"><bean id="httpContentDigest" class="org.archive.modules.extractor.HTTPContentDigest">
	<property name="stripRegex" value="fds" />
 </bean></span>
这儿是引入位置

<span style="font-size:12px;"><ref bean="fetchHttp"/>
<ref bean="httpContentDigest"/>
<ref bean="fetchHistoryProcessor"/></span>
注意顺序。
httpContentDigest中的摘要会将<span style="font-family: Arial, Helvetica, sans-serif;">fetchHttp中的摘要覆盖</span>


fetchHistoryProcessor中会将摘要保存起来,在fetchHttp中有个默认的摘要生成的方法,这个方法没有过滤。

<span style="font-size:12px;">fetchHistoryProcessor<span style="font-family:Arial, Helvetica, sans-serif;">中将摘要保存。</span></span>
<span style="font-size:12px;"><span style="font-family:SimSun;">想要页面没有</span><span style="font-family:Arial, Helvetica, sans-serif;">改变依然返回</span><span style="font-family:FangSong_GB2312;">200的话</span><span style="color: rgb(51, 51, 51); font-family: Arial, sans-serif; line-height: 20px;">setting the </span><span style="color: rgb(51, 51, 51); font-family: Arial, sans-serif; line-height: 20px; widows: auto;">sendIfModifiedSince</span><span style="color: rgb(51, 51, 51); font-family: Arial, sans-serif; line-height: 20px; widows: auto;"> and </span><span style="color: rgb(51, 51, 51); font-family: Arial, sans-serif; line-height: 20px; widows: auto;">sendIfNoneMatch</span><span style="color: rgb(51, 51, 51); font-family: Arial, sans-serif; line-height: 20px; widows: auto;"> properties of FetchHTTP to false</span></span>
<pre style="background-color: rgb(240, 240, 240);"><span style="font-family:SimSun;font-size:12px;"><span style="color: rgb(51, 51, 51); line-height: 20px; widows: auto;">这</span><span style="line-height: 20px; widows: auto;">是官</span><span style="line-height: 20px; widows: auto;">方文档的</span><span style="line-height: 20px; widows: auto;">话,但是我设置为true,</span><span style="line-height: 20px; widows: auto;">依然把整个页面都反回了。感觉要在服务器手动返回302才行</span></span>

另外为了在MirrorWriterProcessor值保存修改的文件,改了一个方法:
<span style="font-size:12px;">protected boolean shouldProcess(CrawlURI curi) {
		Map[] history = (Map[]) curi.getData().get(RecrawlAttributeConstants.A_FETCH_HISTORY);
		boolean flg = false;

		// 已经抓取过的不写入.这里用 history[1] 而不用 history[0],是因为在 FetchHistoryProcessor
		// 中,会往 history 中加一个新的值进去
		// 而这个值是没有 A_WRITE_TAG 的,所以实际上上次请求的记录是 history[1]
//		if (history != null && history[1] != null && history[1].containsKey(RecrawlAttributeConstants.A_WRITE_TAG)) {
		if(history!= null && history[0] != null 
                && history[0].containsKey(A_CONTENT_DIGEST)
                && history[1] != null
                && history[1].containsKey(A_CONTENT_DIGEST)
                && history[0].get(A_CONTENT_DIGEST).equals(history[1].get(A_CONTENT_DIGEST))
                ){
			flg = false;
		} else {
			// 没有抓取过.如果获取成功了.写入
			flg = isSuccess(curi);
		}
		return flg;

		// return isSuccess(curi);
	}</span>
<span style="font-size:12px;"><span style="background-color: rgb(240, 240, 240);">这个和</span><a target=_blank href="http://blog.sina.com.cn/s/blog_5f54f0be0101hdep.html" style="background-color: rgb(240, 240, 240);">http://blog.sina.com.cn/s/blog_5f54f0be0101hdep.html</a><span style="background-color: rgb(240, 240, 240);">这篇文章有点不同,感觉这篇文章的判断</span><span style="font-family: simsun; line-height: 21px; background-color: rgb(255, 255, 255);">history[1].containsKey(A_WRITE_TAG)这儿肯定成立,</span></span>
<span style="font-size:12px;"><span style="font-family: simsun; line-height: 21px; background-color: rgb(255, 255, 255);">不太对</span></span>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值