使用Nutch转储国外图片

Dump foreign images using Nutch

我正在尝试使用 Apache Nutch 转储完整的网站内容。它适用于来自同一域的 html 页面和图像,但它不会转储来自其他站点的图像,例如如果我有一个域为 foo.bar 且内容为:

的站点
<html>
<body>
  <img src="http://foo.bar/img"/>
  <img src="http://another.domain/img"/>
</body>
</html>

Nutch 将仅转储第一张图片 (foo.bar/img) 而不会转储第二张图片 (another.domain/img)。

现在我几乎使用默认配置。如何配置nutch从其他域获取国外图片?

更新: 我是来自 Java 代码的 运行 Nutch,具有 4 个解析周期, 这是我的 Nutch 代码:https://gist.github.com/g4s8/2875790194b3482e31ee9e83561618e2

来自您共享的配置。我看到 nutch-site.xml 上有以下内容:

<property>
    <name>db.ignore.external.links</name>
    <value>true</value>
</property>

这实际上忽略了所有外部链接。在 db-ignore-external-exemptions.txt 文件中,您配置了一些豁免项:

+(?i)\.(jpg|png|gif)$

但为了使这些设置生效,您需要启用 urlfilter-ignoreexempt 插件。你可以看到如何here

使用这种组合,您可以忽略所有外部链接,只需将那些与豁免文件(在您的情况下为图像)上的规则相匹配的链接添加到您的 CrawlDB 中。

由于您是 运行 Nutch 在 Java 进程中,我的建议是拥有一个独立的本地 Nutch 设置,您可以在其中测试您的配置。 bin/nutch parsecheckerbin/nutch indexcheckerbin/nutch plugin 对调试很有帮助。您可以(使用这些命令)使用特定测试用例测试某些配置,而无需启动整个爬网(节省大量时间)。