屏幕抓取:如何绕过“HTTP错误403:请求被robots.txt拒绝”

55 投票
8 回答
50887 浏览
提问于 2025-04-15 22:46

有没有办法解决下面的问题呢?

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

除了联系网站的拥有者(barnesandnoble.com)之外,还有其他办法吗?我正在建立一个可以帮助他们增加销售的网站,不明白他们为什么会在某个深度拒绝访问。

我在用Python 2.6的mechanize和BeautifulSoup库。

希望能找到一个解决办法。

8 个回答

13

下面是用来正确发送请求的代码:

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
241

哦,你需要忽略 robots.txt 文件。

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

如果你想和Barnes & Noble惹上法律麻烦,可以试着伪装你的用户代理(也就是让他们觉得你是个真人,而不是机器人)。但其实更好的办法是直接联系他们的业务发展部门,争取获得他们的授权。毕竟,他们只是想避免一些特定的机器人,比如价格比较网站,去抓取他们的网站信息。如果你能说服他们你不是那种机器人,签个合同什么的,他们可能会愿意为你开个例。

而那种仅仅是通过技术手段绕过他们在robots.txt中设定的政策的方法,风险可就大了,我绝对不推荐。顺便问一下,他们的robots.txt文件里到底写了些什么呢?

撰写回答