使用 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 抓取并提交表单。如何查看传递的参数?

当某些行包含其他格式时,使用 mechanize & beautiful 修饰表格

如何使用python和mechanize登录网站

Ruby登录使用mechanize进行spotify

使用 mechanize 检索 robots.txt 时出现 HTTP 403 错误