Apache Nutch 2.3.1在选择点

时间:2018-03-28 11:03:39

标签: web-crawler nutch giraph nutch2

我已经将apache Nutch 2.3.1配置为完整的Hadoop / Hbase生态系统。我希望我的爬虫应该更多地优先考虑每次迭代中种子中给出的那些域。根据我的测试;它可以在任一方向完成,即从外链中选择所有网址,反之亦然。可以说,我希望40%选择的URL应该来自外链(除了种子中给出的),60%的URL应该属于种子中给出的域。有可能吗?怎么样?

我认为这是导致此行为的生成器步骤。

1 个答案:

答案 0 :(得分:1)

首先,对于60%,40%的比例,Nutch不提供任何内置机制。话虽如此,我认为这个答案中的很多内容(https://stackoverflow.com/a/49240868/1977773)都适用于此。

生成器将按分数对URL进行排序,然后收集下一个循环的前n个URL。一种方法是在种子文件(https://github.com/apache/nutch/blob/master/src/java/org/apache/nutch/crawl/Injector.java#L80)中最初添加一个高分,这样当URL被添加到您的crawldb时,这个更高的分数将传播到外链,所以当下一个周期到来时,你将会对来自种子文件的那些外链有一些“偏好”。

这可能会增加一些噪音,考虑到您的种子网址指向不同的域可能会有一个外链,并且分数也会传播。可以使用种子文件中的自定义属性和自定义评分过滤器修复此问题,以便为同一域中的这些链接提供更高的分数。

但是如果你真的想要达到60/40的比例(或确定性的话),我认为现在的方法是在你完全控制要抓取的URL时使用自定义生成器。