使用 Mechanize 进行抓取,遇到 HTTP 错误 403
Posted
技术标签:
【中文标题】使用 Mechanize 进行抓取,遇到 HTTP 错误 403【英文标题】:Using Mechanize for Scraping, encountered HTTP Error 403 【发布时间】:2016-01-01 05:20:05 【问题描述】:得到后
mechanize._response.httperror_seek_wrapper:HTTP 错误 403:请求 robots.txt 不允许
使用 Mechanize 时,添加了来自 Screen scraping: getting around "HTTP Error 403: request disallowed by robots.txt" 的代码以忽略 robots.txt,但现在收到此错误:
mechanize._response.httperror_seek_wrapper:HTTP 错误 403:禁止
有没有办法解决这个错误?
(当前代码)
br = mechanize.Browser()
br.set_handle_robots(False)
【问题讨论】:
【参考方案1】:在上面发布的两行当前代码下面添加这行代码解决了我遇到的问题:
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')]
【讨论】:
【参考方案2】:HTTP 错误 403:robots.txt 不允许请求
在这里令人困惑并且在语义上是错误的。这不是服务器返回的 HTTP 403
错误,而是来自客户端基于解析 robots.txt
文件的虚构/硬编码 403。
这个库违背了最基本的 HTTP 规范。 HTTP 错误是由 HTTP 服务器为客户端的权限而创建的。它们不应该由客户创建。这就像在高速公路上走错路并为此责备其他司机。
【讨论】:
以上是关于使用 Mechanize 进行抓取,遇到 HTTP 错误 403的主要内容,如果未能解决你的问题,请参考以下文章
Perl WWW::Mechanize(或 LWP)获取重定向 url
通过 Mechanize 抓取并提交表单。如何查看传递的参数?