为什么 Nutch 似乎不知道“Last-Modified”?

2024-01-31

我将 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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Nutch 似乎不知道“Last-Modified”? 的相关文章

  • 有没有办法在 Puppeteer for Firefox 中使用代理?

    有没有办法将 Puppeteer 配置为在 Firefox 中使用代理 而无需手动调整操作系统的代理设置 我可以通过使用命令行参数在 Chrome 中完成此操作args proxy server http 0 0 0 0 0000 但是Fi
  • 如何修复获取 URL 时出现的 HTTP 错误。爬行时java中的Status = 500?

    我试图从评论页面抓取用户对 imdb 电影的评分 我的数据库中的电影数量约为 600 000 我使用jsoup来解析页面 如下所示 抱歉 我没有在这里写完整的代码 因为它太长了 try connecting to mysql db Resu
  • Scrapy 通过表单身份验证绕过警报消息

    Scrapy是否可以抓取警报消息 链接例如 http 域名 admin http domainhere admin 一旦加载到实际的浏览器中 就会出现一条带有表单的警报消息 以填写用户名和密码 或者有没有办法检查警报消息中的表单以了解要填写
  • 在 Python 中迭代并从 Web 中提取表并保存为 Excel 文件

    我想迭代并从链接中提取表here http zjj sz gov cn ztfw gcjs xmxx jgysba 然后另存为excel文件 我怎样才能做到这一点 谢谢 到目前为止我的代码 import pandas as pd impor
  • Nutch:通过在标头中放置 cookie 进行身份验证

    令我惊讶的是 让 Nutch 能够抓取需要身份验证的网站部分的支持或信息如此之少 我知道 Apache Nutch 目前可能无法 但显然希望 http wiki apache org nutch HttpPostAuthentication
  • 使用用户名和密码登录后如何抓取网站

    我编写了一个网络爬虫 可以使用关键字抓取网站 但我想登录到我指定的网站并按关键字过滤信息 如何实现这一点 我发布了到目前为止我已经完成的代码 public class DB public Connection conn null publi
  • 有没有一种方法或工具可以自动访问我网站的所有页面

    我想自动访问 抓取我网站上的所有页面以生成缓存文件 有什么方法或工具可以做到这一点吗 只需使用下载整个页面的任何机器人即可 https superuser com questions 14403 how can i download an
  • 在缓存中找不到元素 - 也许页面自从在 Selenium Ruby Web 驱动程序中查找后已发生更改?

    我正在尝试编写一个爬虫 它可以从加载的页面中爬取所有链接 并在某个文件 例如 XML 或 txt 中记录所有请求和响应标头以及响应正文 我正在新浏览器窗口中打开第一个加载页面的所有链接 因此不会出现此错误 Element not found
  • Googlebot 会抓取用 JavaScript 对 DOM 所做的更改吗?

    对于 SEO 我的任务是添加一个rel nofollow 所有外部链接 最简单 最不显眼的添加方式rel nofollow 每个外部链接都带有一些 jQuery 我已经做得很好 但我现在想知道 Google 是否会看到 jQuery 文档加
  • 如何抓取foursquare签到数据?

    是否可以通过贪心的方式从foursquare中爬取签到数据 即使我与所有用户没有友谊 就像抓取公开的 Twitter 消息一样 如果您有什么经验或建议 请分享 谢谢 如果您有包含 foursquare 链接的公开推文 您可以通过发出 HEA
  • 语法错误,插入“...VariableDeclaratorId”来完成FormalParameterList

    我遇到此代码的一些问题 import edu uci ics crawler4j crawler CrawlConfig import edu uci ics crawler4j crawler CrawlController import
  • 如何通过php从外部网页获取内容?

    我想获取网页中的 标题 描述和关键字 我知道实现这项工作的 3 种方法 a 使用CURL b 使用 fopen c 使用 get meta data 奇怪的是 上述每一项都不能每次都正常工作 对于相同的网址 有时 我可以获得内容 有时 它会
  • 托管爬虫的最佳解决方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个爬虫 可以爬行几个不同的域以获取新帖子 内容 内容总量数十万页 并且每天都有大量新内容添加 因此
  • BOT/蜘蛛陷阱创意

    我有一个客户 他的域名似乎受到 DDoS 攻击的严重打击 在日志中 看起来很正常的具有随机 IP 的用户代理 但它们翻阅页面的速度太快 不像人类 他们似乎也没有要求任何图像 我似乎找不到任何模式 我怀疑这是一群 Windows 僵尸 客户过
  • 扫描网站内容(快速)

    我的数据库中有数千个网站 我想在所有网站中搜索特定字符串 最快的方法是什么 我认为我应该首先获取每个网站的内容 这就是我这样做的方式 import urllib2 re string search string source urllib2
  • 如何设置Robots.txt或Apache仅在特定时间允许爬虫?

    由于 24 小时内流量分布不均匀 我希望在高峰时段禁止爬虫 在非繁忙时段允许爬虫 有没有一种方法可以实现这一目标 编辑 感谢所有的好建议 这是我们找到的另一个解决方案 2bits com 有一篇关于设置 IPTables 防火墙以限制来自某
  • 通过wget命令爬取sitemap.xml的链接

    我尝试抓取 sitemap xml 的所有链接以重新缓存网站 但是 wget 的递归选项不起作用 我只得到响应 远程文件存在 但不包含任何链接 无法检索 但可以肯定的是 sitemap xml 充满了 http 链接 我尝试了 wget 的
  • 制作一个网络爬虫/蜘蛛

    我正在考虑制作一个网络爬虫 蜘蛛 但我需要有人为我指明正确的方向才能开始 基本上 我的蜘蛛将搜索音频文件并为其建立索引 我只是想知道是否有人对我应该如何做有任何想法 我听说用 PHP 完成它会非常慢 我知道 vb net 那么这能派上用场吗
  • 硒隐式等待不起作用

    这是我第一次使用 selenium 和无头浏览器 因为我想使用 ajax 技术抓取一些网页 效果很好 但在某些情况下加载整个页面需要太多时间 特别是当某些资源不可用时 所以我必须为selenium设置一个超时 首先我尝试过set page
  • 如何自动检索AJAX调用的URL?

    目的是对爬行蜘蛛进行编程 使其能够 1 检索此页面表格中链接的 URL http cordis europa eu fp7 security projects en html http cordis europa eu fp7 securi

随机推荐

  • 如何在不使用 typeid/RTTI 的情况下确定实际对象的类型

    我有一个类层次结构 其中子类派生自父类 在一个地方 我需要将任何类型的对象存储 队列 到列表 list Parent 中 然后从该列表中检索对象 存储时 我存储的是指针 它指向最顶层的父类 检索时 我需要了解它实际上是哪个子对象 以便能够通
  • Django Rest Framework 序列化器单独渲染表单

    我知道如何将序列化器的形式作为一个整体呈现 但我不知道如何单独呈现它 类似于模板上的 django 表单 form name form name errors 我当前的文件和代码如下 模型 py Create your models her
  • HTML 不再在 JLabel(和其他组件)中工作

    我有一个我编写的java小程序 并且已经运行了很长一段时间 在小程序中 我有一堆在文本内容中使用 HTML 的 JLabel 这是允许的 并且已经工作多年 我使用 HTML 的主要原因是允许在 JLabels 中换行 问题 最近 包含 HT
  • 系统头文件/usr/include/i386_types.h错误

    我已经使用 C C 大约 7 个月了 目前正在尝试编写一小组线性代数程序 现在我正在尝试测试我的向量类 但收到错误消息 In file included from usr include machine types h 34 from us
  • Rails 4 博客 /:year/:month/:title 具有清晰的路由

    Rails 4 中还有另一种更简洁的方式来实现路由 例如 blog 2014 8 blog post title blog 2014 8 blog 2014 blog 2014 8 tags tag 1 tag 2 page 4 blog
  • X509Chain.Build()方法解释

    我想验证证书链 我得到了X509Certificate2集合并必须验证所有证书是否构建一条链 通常 为了验证证书链 我应该从叶证书中获取数字签名并检查它是否由根证书签名 but在 NET中我找不到从X509Certificate2目的 因此
  • 在 Ansible 即席命令中使用 Ansible 事实

    是否可以使用通常包含在中的内容ansible facts在 Ansible 即席命令中 例如 我有一个文件位于 tmp myFile在我所有的服务器上 我想做 ansible all i inventory file m fetch a s
  • Python语言-使用OOP求圆心

    class Point def init self initX initY Create a new point at the given coordinates self x initX self y initY def getX sel
  • 以管理员身份运行批处理文件 - Windows 7 - 从网络文件系统命令“运行方式”

    我需要设置程序安装程序的交付 该程序有一个program installer exe 和一个文件夹 我在创建安装程序时无法将其包含在安装程序中 因此 当用户需要安装该程序时 我通过邮件向他发送一个批处理文件 echo off if DEFI
  • 为什么 classOf[A.type] 无法编译?

    的签名Predef classOf https github com scala scala blob bda011524f7619b61b4fcc8172f088d2445e947e src library scala Predef sc
  • 添加跳过按钮以快进 .fadeIn / .fadeOut?

    只是为了澄清一下 当您加载我的网站时 我有一些文本淡入 引用 然后淡出 然后一段新的文字 我的品牌名称 淡入 因为我希望人们有足够的时间阅读第一个文本 引文 所以淡入和淡出有点长 但是我不希望人们在第五次访问该网站并不得不等待后变得不耐烦每
  • 我如何索引这个 numpy 数组? [复制]

    这个问题在这里已经有答案了 给定一个 numpy 矩阵a形状的 5 3 和一个索引向量b形状的 5 索引向量中的每个条目都在 0 到 2 之间 如何创建一个新向量c基于a及其索引向量b Use arange对于另一个维度 c a np ar
  • 使用 Google Cloud 添加计费方式会导致“意外错误”

    我一直在尝试向我的谷歌计算引擎添加计费方法 但没有任何运气 输入我的 Visa 卡详细信息并单击提交按钮后 我总是收到以下消息 发生意外的错误 请稍后再试 我正在尝试创建一个谷歌计算引擎实例 但如果没有启用计费 这是不可能的 我已经尝试通过
  • 如何在输出后将用户输入保持在同一行?

    我正在尝试编写询问用户年龄然后输入的代码 但我希望数字在您输入后出现在问题旁边 我的代码如下所示 System out println Enter a number num1 userIn nextInt 它工作正常 但数字总是出现在下面的
  • sql server 中列总和的算术溢出

    我正在尝试获取列总数 但是当我运行此查询时 出现以下错误 有什么建议吗 SELECT SUM Size as total FROM AllDocs Where DirName LIKE sites test test ERROR Msg 8
  • 如何在核心图轴的末尾设置箭头?

    我发现 Core Plot 是非常好的绘图库 但有一个小问题 我找不到任何方法在绘图轴的末端设置方向箭头 我可能在这里错过了什么吗 Core Plot 尚不支持此功能 您可以在核心图处添加增强请求问题跟踪器 http code google
  • 在 Visual Studio Code 上设置 OmniSharp 的 C# 格式选项?

    我正在尝试利用与 Visual Studio Code 的集成 但无法弄清楚如何设置 C 格式选项 这config json就在我的 Mac 上 OmniSharp exe 旁边 Applications Visual Studio Cod
  • 真正清除终端屏幕[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用clear终端上的命令只会欺骗用户 让他们认为屏幕已被清除 当您使用鼠标滚动时 您仍然可以看到先前命令的输出 当你淹没在文字海啸中时
  • 无法恢复 TextVectorization 类的图层 - 文本分类

    系统信息 谷歌合作实验室 当我运行官方张量流基本文本分类提供的示例时 一切运行良好 直到模型保存 但是当我加载模型时 它给了我这个错误 运行时错误 无法恢复 TextVectorization 类的图层 TextVectorization
  • 为什么 Nutch 似乎不知道“Last-Modified”?

    我将 Nutch 设置为 60000 的 db fetch interval default 这样我就可以每天爬行 如果我不这样做 当我第二天抓取时它甚至不会查看我的网站 但是 当我第二天进行爬网时 昨天获取的每个页面都会获取 200 响应