首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Nutch似乎不知道"Last-Modified"?

为什么Nutch似乎不知道"Last-Modified"?
EN

Stack Overflow用户
提问于 2009-08-09 21:05:56
回答 2查看 1.5K关注 0票数 2

我将Nutch的db.fetch.interval.default设置为60000,这样我就可以每天爬行了。如果我不这样做,它甚至不会在我第二天爬行时查看我的网站。但是当我第二天爬网时,它昨天获取的每个页面都会得到一个200响应代码,这表明它没有在“If-Modified- next”中使用前一天的日期。它不应该跳过获取没有改变的页面吗?有没有办法让它做到这一点?我注意到Fetcher.java中有一个ProtocolStatus.NOT_MODIFIED,所以我认为它应该能够做到这一点,不是吗?

顺便说一下,这是从当前主干的conf/nutch-default.xml剪切并粘贴的:

代码语言:javascript
复制
<!-- web db properties -->

<property>
  <name>db.default.fetch.interval</name>
  <value>30</value>
  <description>(DEPRECATED) The default number of days between re-fetches of a page.
  </description>
</property>

<property>
  <name>db.fetch.interval.default</name>
  <value>2592000</value>
  <description>The default number of seconds between re-fetches of a page (30 days).
  </description>
</property>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-10 21:04:06

我找到问题了。这是Nutch的一个bug。我已经给Nutch开发者列表发了邮件,但我的解决方法是:

代码语言:javascript
复制
Index: src/plugin/protocol-http/src/java/org/apache/nutch/protocol/http/HttpResponse.java
===================================================================
--- src/plugin/protocol-http/src/java/org/apache/nutch/protocol/http/HttpResponse.java  (revision 802632)
+++ src/plugin/protocol-http/src/java/org/apache/nutch/protocol/http/HttpResponse.java  (working copy)
@@ -124,11 +124,15 @@
         reqStr.append("\r\n");
       }

-      reqStr.append("\r\n");
       if (datum.getModifiedTime() > 0) {
         reqStr.append("If-Modified-Since: " + HttpDateFormat.toString(datum.getModifiedTime()));
         reqStr.append("\r\n");
       }
+      else if (datum.getFetchTime() > 0) {
+          reqStr.append("If-Modified-Since: " + HttpDateFormat.toString(datum.getFetchTime()));
+          reqStr.append("\r\n");
+      }
+      reqStr.append("\r\n");     

       byte[] reqBytes= reqStr.toString().getBytes();

现在我在我的Apache日志中看到了304,而我应该看到它们。

票数 6
EN

Stack Overflow用户

发布于 2009-08-09 21:13:39

我想你搞错了一个选项名称-- db.fetch.interval.default。应该是这样的。

db.default.fetch.interval

在获取每个注入的页面之后的天数,接下来应该获取该页面。默认情况下为30。

我刚刚阅读了最新版本的更改日志,发现了以下内容

  1. NUTCH-61 -支持自适应重新获取间隔和检测未修改的内容。(ab)

如果您没有安装最新版本,我建议您安装最新版本。

另外,您是否正在使用-adddays选项进行爬行?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1252289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档