【问题标题】:Reject url's after fetching based on a condition in Nutch根据 Nutch 中的条件获取后拒绝 url
【发布时间】:2017-09-22 05:20:50
【问题描述】:

我想知道是否可以根据条件(例如发布的日期或时间)过滤获取的 url。我知道我们可以通过regex-urlfilter 过滤网址以进行获取。

就我而言,我不想索引旧文档。因此,如果一份文件在 2017 年之前发布,那么它必须被拒绝。是否需要任何日期过滤插件或它已经可用!

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: java web-scraping web-crawler nutch


    【解决方案1】:

    如果您只想避免索引旧文档,您可以编写自己的IndexingFilter 来检查您的状况并避免对文档进行索引。您没有提及您的 Nutch 版本,但假设您使用的是 v1 we have a new PR(它将为下一个版本做好准备),它将使用 JEXL 表达式开箱即用地提供此功能,以允许/防止文档被索引.

    如果你能拿到 PR 并对其进行测试并提供一些反馈,那就太棒了!

    如果需要,您可以编写自己的自定义插件,并且可以检查 mimetype-filter 是否与您想要的内容相似(在这种情况下,我们会根据 mimetype 应用过滤)。

    还有一个警告,目前 Nutch 使用的 fetchTimemodifiedTime 来自网络服务器在获取资源时发送的标头,请记住这些值不应被信任(除非你 100% 确定)因为在大多数情况下你会得到错误的日期。 NUTCH-1414 提出了一种更好的方法来从页面内容中提取发布日期,或者您可以实现自己的解析器。

    请记住,使用这种方法您仍然可以获取/解析旧文档,您只需跳过索引步骤。

    【讨论】:

    • 感谢您的回复。我已经有一个自定义索引过滤器插件。目前我通过跳过旧文档的索引在这个插件中添加了日期过滤器选项。我有一个解析插件,可以从网站中提取所有相关细节。因此,我从插件中获取了文档的发布日期,并在我的索引器插件中使用此值进行了过滤。还有其他选择吗?现在,我在解析和索引阶段传递这个文档(实际上不需要,因为它很旧)。我想在抓取阶段之后跳过它。
    • 问题是提取器的职责只是提取文档,它不会对之后发生的事情采取行动。如果您想保持默认的 Nutch 行为,您仍然需要解析文档以获取有用的信息(日期),然后您可以决定如何处理文档。您可以编写自己的 fetcher,但维护起来并不容易。请记住,在解析旧文档后,您仍然可以找到指向较新文档的有效外链。
    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多