【问题标题】:Apache Nutch 2.3.1 give more preference to seed domains at selection pointApache Nutch 2.3.1 在选择点更倾向于种子域
【发布时间】:2018-03-28 11:03:39
【问题描述】:

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

我认为是生成器步骤导致了这种行为。

【问题讨论】:

    标签: web-crawler nutch giraph nutch2


    【解决方案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 时,这个更高的分数将传播到外链接,所以当下一个周期到来时,你会有一些来自您的种子文件的那些外链的“偏好”。

    考虑到您的种子 URL 上可能有一个指向不同域的外链接,这可能会增加一些噪音,并且分数也会被传播。这可以通过种子文件中的自定义属性和自定义评分过滤器来解决,以便您为同一域中的这些链接提供更高的分数。

    但是,如果您真的想达到 60/40 的比率(或某种确定性),我认为当您完全控制要抓取的 URL 时,可以使用自定义生成器。

    【讨论】:

    • 谢谢,任何想法或指导如何编写自定义生成器?
    • 生成器并不是 Nutch 的真正“可扩展”代码(例如,与 HtmlParseFilters 不同)。我的建议是开始检查 Generator 类 (github.com/apache/nutch/blob/master/src/java/org/apache/nutch/…) 并从那里开始调整你自己的逻辑。为此我们没有文档,因为普通的生成器应该适用于最典型的情况。在任何情况下,我们都欢迎代码/文档方面的贡献。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多