52

有没有办法解决以下问题?

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

是解决此问题的唯一方法是联系网站所有者 (barnesandnoble.com).. 我正在建立一个可以为他们带来更多销售的网站,但不确定他们为什么会在一定深度拒绝访问。

我在 Python2.6 上使用 mechanize 和 BeautifulSoup。

希望有解决办法

4

8 回答 8

229

哦,你需要忽略 robots.txt

br = mechanize.Browser()
br.set_handle_robots(False)
于 2010-10-03T13:02:38.880 回答
16

如果您想在 Barnes & Noble 遇到可能的法律问题,您可以尝试对您的用户代理撒谎(例如,通过试图让人相信您是人类而不是机器人)。为什么不联系他们的业务发展部门并说服他们专门授权您呢?毫无疑问,他们只是想避免让他们的网站被某些类别的机器人(例如价格比较引擎)刮掉,如果您可以说服他们您不是其中之一,签署合同等,他们很可能愿意对你来说是个例外。

一种“技术”解决方法只是破坏了他们在 robots.txt 中编码的策略,这是一种高法律风险的方法,我永远不会推荐。顺便说一句,他们的 robots.txt 是如何读取的

于 2010-05-17T00:40:27.253 回答
11

发出正确请求的代码:

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
resp = br.open(url)
print resp.info()  # headers
print resp.read()  # content
于 2017-04-20T22:16:41.570 回答
5

Mechanize 会自动遵循 robots.txt,但如果您有权限,或者您已经通过 .. 考虑过道德规范,则可以禁用它。

在浏览器中设置标志:

browser.set_handle_equiv(False) 

这会忽略 robots.txt。

此外,请确保限制您的请求,以免在他们的网站上施加过多负载。(请注意,这也降低了他们检测并禁止您的可能性)。

于 2010-05-17T01:16:23.623 回答
3

您收到的错误与用户代理无关。mechanize 默认情况下会在您使用它导航到站点时自动检查 robots.txt 指令。使用 mechanize.browser 的 .set_handle_robots(false) 方法禁用此行为。

于 2010-07-11T23:17:11.443 回答
1

设置您的User-Agent标题以匹配一些真正的 IE/FF 用户代理。

这是我的 IE8 用户代理字符串:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTB5.6)
于 2010-05-17T00:39:51.517 回答
0

在不讨论道德问题的情况下,您可以修改标题以使其看起来像 googlebot,或者 googlebot 是否也被阻止?

于 2010-05-17T00:40:48.163 回答
0

看起来,你必须做更少的工作来绕过robots.txt至少这篇文章说。因此,您可能必须删除一些代码才能忽略过滤器。

于 2010-05-17T00:41:33.367 回答