屏幕抓取:如何绕过“HTTP错误403:请求被robots.txt拒绝”
有没有办法解决下面的问题呢?
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文件里到底写了些什么呢?