Apache Nutch 2.3.1网站主页处理

时间:2018-03-12 07:15:54

标签: apache web-crawler nutch

我已将Nutch 2.3.1配置为抓取一些新闻网站。由于网站主页在一天后会发生变化,为什么我想以某种不同的方式处理主页,因此对于主页,只有主要类别被抓取而不是文本,因为文本会在一段时间后发生变化(我在Google中观察过类似的事情) 。 对于其余页面,它的工作正常(爬行文本等)

1 个答案:

答案 0 :(得分:1)

目前Nutch并没有为主页提供任何特殊处理,它只是一个可以抓取的网址。如果你想这样做,你可能需要定制Nutch的某些部分。

如果您正在收集一组固定的网址(通常放在种子文件中),您可以将一些元数据附加到这些网址,并为这些网址使用不同的策略。例如,设置一个非常高的分数&短暂获取间隔(https://github.com/apache/nutch/blob/release-2.3.1/src/java/org/apache/nutch/crawl/InjectorJob.java#L56-L59)。

由于生成器作业将按分数对URL进行排序,因此只要所有其他URL的分数低于您用于种子URL的值,这应该有效。请记住,每次新周期开始时,这将导致Nutch抓取此URL(因为种子URL将始终位于顶部)。

如果您在正常的抓取周期中发现新的主页,那么它很棘手,因为Nutch没有任何方法可以检测给定的URL是否是主页。对于这种情况,您需要检查当前网址是否是主页,如果它确实是主页,那么您需要修改分数/获取间隔以确保此网址最终位于顶部排名网址。

  

这种解决方法可能会导致一些问题:Nutch最终只能抓取主页而不是其他网址,这不是一个好例子。

您也可以编写自己的生成器,这样您就可以获得更多控制权并且不仅仅依赖于分数,而是仅依靠获取间隔。

  

完全披露:虽然我过去使用了类似的方法,但我们最终更改了此系统以使用StormCrawler(我们正在构建新闻搜索引擎),因此我们需要更多地控制页面的时间被提取(Nutch的批处理性质不适合这个用例),还有一些需要更多NRT方法的商业案例。