【问题标题】:Why does RobotParser block this result?为什么 RobotParser 会阻止这个结果?
【发布时间】:2016-08-16 11:00:41
【问题描述】:

我使用 Python 的机器人解析器已经有一段时间了,它运行良好。今天早上我浏览了一个网站,其中包含一个看起来非常宽松的 robots.txt 文件:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

但是,由于某种原因,解析器认为所有 URL 都被阻止了。

import robotparser
rp = robotparser.RobotFileParser("http://newenglandreptileshop.com/robots.txt")
rp.read()
# Try any URL
rp.can_fetch("*", "http://www.newenglandreptileshop.com")

False

我的假设是允许爬取所有路径,除非被拒绝。我使用另一个 robots.txt 解析器来检查我的假设,它同意我应该能够访问此服务器上的大多数 URL。 Google 也将它们编入索引。

似乎是 Python 库中的一个错误。怎么回事?

【问题讨论】:

  • 我不知道RobotParser,只是一个想法:如果你使用相同的主机,同样的问题?您使用newenglandreptileshop.com(不带www),然后使用www.newenglandreptileshop.com(带www)。
  • 好眼光。不幸的是,这没有帮助。

标签: python web-crawler robots.txt


【解决方案1】:

根据https://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.1https://en.wikipedia.org/wiki/Robots_exclusion_standard 中的机器人排除标准,没有允许记录之类的东西。要允许访问,您必须添加一个空的 Disallow 记录。尝试在您控制的域上托管 robots.txt 并删除显式允许记录并查看 RobotParser 是否为 can_fetch 返回 True。

【讨论】:

  • 谢谢,但这仍然不能回答我为什么不允许的路径之外的任何路径都会被禁止(我不关心 /wp-admin/ 路径)。
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 2014-09-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多