【问题标题】:how to bypass robots.txt with apache nutch 2.2.1如何使用 apache nutch 2.2.1 绕过 robots.txt
【发布时间】:2014-06-05 11:22:21
【问题描述】:

任何人都可以告诉我是否有任何方法可以让 apache nutch 在爬行时忽略或绕过 robots.txt。我正在使用 nutch 2.2.1。我发现“RobotRulesParser.java”(完整路径:-src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/ RobotRulesParser.java) 负责读取和解析 robots.txt。有没有办法修改这个文件以忽略 robots.txt 并继续爬取?

或者有没有其他方法可以达到同样的效果?

【问题讨论】:

  • 伙计们,我只是想根据自己的知识了解这一点。我对 robots.txt 非常尊重,但好奇心很少有什么害处。毕竟我是个程序员。
  • Stack Overflow 上的问题是公开的,并且在 Google 的搜索结果中排名靠前。所以在实践中它不会“仅仅为了你自己的知识”——它将是为了每个搜索它的人的知识。在这种情况下,这将是一个坏事
  • @JonK 在这种情况下我会删除这篇文章。但我想你已经知道人们已经在使用旨在忽略 robots.txt 的网络爬虫。当我说我无意做这些事情时,请相信我,否则我可以简单地使用其中一个爬虫。我只是想以更好的方式理解 nutch。
  • Google 搜索“nutch ignore robots.txt”会发现很多可能性。最坏的情况,只需创建您自己的org.apache.nutch.protocol.RobotRules 实现,它会为所有网站返回“我们允许抓取”。看起来很简单。我会把实际的实现留给你做练习。
  • 谢谢吉姆。我会试试的。

标签: java nutch robots.txt web-crawler


【解决方案1】:
  1. 首先,如果您要抓取任何外部网站,我们应该尊重 robots.txt 文件。 否则您将面临风险 - 您的 IP 被禁止或更糟可能是任何法律案件。

  2. 如果您的网站是内部网站并且不向外部世界公开,那么您应该更改 robots.txt 文件以允许您的爬虫。

  3. 如果您的网站暴露在互联网上并且数据是机密的,那么您可以尝试以下选项。因为在这里您不能冒险修改 robots.txt 文件,因为外部爬虫可以使用您的爬虫名称并爬取网站。

    在 Fetcher.java 文件中:

    if (!rules.isAllowed(fit.u.toString())) { }
    

    这是负责阻止 URL 的块。您可以绕过此代码块来解决您的问题。

【讨论】:

  • 感谢您接受我的评论作为对您问题的回答:但我想知道 mt 回答的哪一部分对您有帮助...
猜你喜欢
  • 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
相关资源
最近更新 更多