Python 刮屏:四处走动;HTTP错误403:robots.txt不允许请求;

Python 刮屏:四处走动;HTTP错误403:robots.txt不允许请求;,python,screen-scraping,beautifulsoup,mechanize,http-status-code-403,Python,Screen Scraping,Beautifulsoup,Mechanize,Http Status Code 403,有没有办法绕过以下问题 httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt 这是联系网站所有者(barnesandnoble.com)的唯一方法。。我正在建立一个网站,这将给他们带来更多的销售,不知道为什么他们会拒绝访问某个深度 我正在Python2.6上使用mechanize和BeautifulSoup 希望有一个解决办法将您的用户代理标题设置为与某个真正的IE/FF用户代理相匹配 以下是我的IE8

有没有办法绕过以下问题

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
这是联系网站所有者(barnesandnoble.com)的唯一方法。。我正在建立一个网站,这将给他们带来更多的销售,不知道为什么他们会拒绝访问某个深度

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


希望有一个解决办法

将您的
用户代理
标题设置为与某个真正的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)

如果你想与Barnes&Noble陷入可能的法律纠纷,你可以尝试对你的用户代理撒谎(例如,试图假装你是人而不是机器人)。为什么不与他们的业务开发部门联系,说服他们专门授权你呢?毫无疑问,他们只是想避免自己的网站被某些类别的机器人(如比价引擎)刮伤,如果你能说服他们你不是一个机器人,签署合同,等等,他们很可能愿意为你破例


一个“技术性”的解决方案,打破了robots.txt中编码的政策,是一种法律风险很高的方法,我永远不会推荐。顺便说一句,他们的robots.txt是如何读取的?

在不讨论其道德规范的情况下,您可以修改标题,使其看起来像谷歌机器人,或者谷歌机器人也被阻止了?

看起来,您需要做更少的工作来绕过
robots.txt
。因此,您可能必须删除一些代码以忽略过滤器。

Mechanize自动跟随robots.txt,但如果您有权限,或者您已经仔细考虑了道德规范,则可以禁用它

在浏览器中设置一个标志:

browser.set_handle_equiv(False) 
这将忽略robots.txt


另外,确保你限制了你的请求,这样你就不会给他们的网站增加太多的负载。(注意,这也降低了他们检测和禁止您的可能性)。

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

哦,您需要忽略robots.txt

br = mechanize.Browser()
br.set_handle_robots(False)

发出正确请求的代码:

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

如果你计划货币化,可能会有法律问题,但如果你没有,请继续。scroogle万岁。我看不到任何道德问题,但法律问题可能会变得更糟(你扮演的任何人都可以发现你并起诉你,而不仅仅是B&N和你的ISP)。“做这件违法的事,只是不要被抓住”不是明智的建议,即使在没有道德问题的情况下也是如此(而且,我再说一遍,我不认为违反这些特定法律有任何不道德的地方——只是风险太大,潜在收益太少;-).法律问题是一个道德问题。在这种情况下,你是否遵循它。他们的robots.txt只允许“/reviews/reviews.asp”-这就是你要删除的吗?谢谢Alex,我同意。。。在阅读了更多关于robots.txt的内容后,这是最好的方法。干杯@fmark我正在删除视频部分。。。robots.txt不具有法律约束力。()在美国,这可能是正确的(没有给出诉讼结果,发表意见的人也可能不是代表性样本),但世界各地的法律差异很大。在英国,按要求行事很可能是刑事犯罪,因为这很可能违反1990年《计算机滥用法》第1条。这对迭戈来说可能不是问题,但我建议谨慎。嘿,wisty,你说的限制请求是什么意思?我的意思是,在每个请求之后设置一个小的超时(即time.sleep(1)),并且不要使用很多线程。我会使用一些线程(以防一些线程陷入困境),然后几秒钟睡眠。这在当前版本的Mechaniz中不起作用这就是我要找的。这正是我要找的。哇,这仍然有效!我想知道这是否在任何方面是非法的。那篇文章更多的是关于自定义代码来刮网站。如果您正在使用某个库,则该库可能已经尊重robots.txt。唯一的答案是,如何设置标题以及禁用
robots.txt
处理。