我们有一个奇怪的情况,我们正在做Nutch抓取,其中Nutch到达一个错误的网页,实际上,服务器应该发送404.无论出于何种原因,服务器都没有。
当Nutch点击这个“坏”URL时,会生成一个基于错误的所有相对路径的页面。因此,如果根页面为“http://example.com/bad”,则此页面将包含数百个链接,例如“example.com/bad/data/1”和“example.com/bad/calendar/2012”和“ example.com/bad/data/1/calendar/2012" 。
因此,Nutch将继续永远爬行。
我想追溯错误地首先链接到这个“坏”页面的任何页面。似乎可以使用bin/nutch readlinkdb
或bin/nutch readdb
命令来实现这一点。我尝试过指定错误网址(通过'--url'),但没有找到相关的网址。执行完全转储实际上确实是不包含任何错误URL的网络数据。但Nutch肯定会将错误的URL注入Solr。
为什么会这样,我如何追踪Nutch到错误网址的路径?
答案 0 :(得分:1)
有两种方法可以解决这个问题:
将linkdb.ignore.internal.links
属性设置为false
。这将填充每个URL的所有链接,您可以从readlinkdb
转储中手动找到错误链接。
将linkdb.max.inlinks
中的nutch-default.xml
属性设置为1.这将仅存储链接到linkdb
中页面的第一个网址。您仍需要将linkdb.ignore.internal.links
属性设置为false
。