我正在尝试使用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以从其他域中获取外部图像?
更新: 我正在以4个解析周期从Java代码运行Nutch, 这是我的Nutch代码:https://gist.github.com/g4s8/2875790194b3482e31ee9e83561618e2
答案 0 :(得分:1)
从您共享的配置中。我看到在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中。
由于您是在Java进程中运行Nutch,因此我的建议是要有一个独立的本地Nutch设置,您可以在其中测试配置。 bin/nutch parsechecker
,bin/nutch indexchecker
和bin/nutch plugin
对调试非常有帮助。您可以使用特定的测试用例测试(使用这些命令)某些配置,而无需启动整个爬网(节省大量时间)。