我正在尝试使用Apache转储完整的站点内容。它可以很好地处理来自同一个域的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从其他域获取外国图像?
更新:我从代码中运行了4个解析周期,这是Nutch代码:https://gist.github.com/g4s8/2875790194b3482e31ee9e83561618e2
发布于 2019-04-24 09:25:25
从您共享的配置中。我在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插件。你可以看到这里是怎么做到的。
使用这种组合,您可以忽略所有外部链接,只需在CrawlDB中添加那些与豁免文件(在您的示例中的图像)上的规则匹配的链接。
由于您在Java进程中运行Nutch,我的建议是有一个独立的本地Nutch设置,您可以在这里测试您的配置。bin/nutch parsechecker、bin/nutch indexchecker和bin/nutch plugin对调试非常有帮助。您可以用特定的测试用例测试(使用这些命令)一些配置,而不需要启动整个爬行(节省很多时间)。
https://stackoverflow.com/questions/55728418
复制相似问题