gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:01:04 26 4
gpt4 key购买 nike

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

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

<!-- 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>

最佳答案

我发现了问题。这是 Nutch 中的一个错误。我已向 Nutch 开发人员列表发送了有关此问题的电子邮件,但这是我的修复方法:

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。

关于web-crawler - 为什么 Nutch 似乎不知道 "Last-Modified"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com