HTTP 错误:解析网站时出现 403

Amr*_*lip 1 postgresql mechanize beautifulsoup python-2.7

所以我试图从这个网站http://dl.acm.org/dl.cfm进行解析。该网站不允许网络抓取工具,因此我得到了HTTP error: 403 forbidden.

我正在使用 python,所以我尝试机械化来填写表单(自动填写表单或单击按钮),但我再次遇到了相同的错误。

我什至无法使用urllib2.urlopen()函数打开 html 页面,它给出了相同的错误。

谁能帮我解决这个问题吗?

Kyo*_*Kyo 5

如果网站不允许网络抓取工具/机器人,那么您一开始就不应该在网站上使用机器人。

但为了回答你的问题,我怀疑该网站正在阻止 urllib 的默认用户代理。您可能必须通过编写自己的请求来将用户代理欺骗到已知的浏览器。

headers = {"User-Agent":"Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"}
req = urllib2.Request("http://dl.acm.org/dl.cfm", headers=headers)
urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)

编辑:我测试了这个并且它有效。该网站正在根据用户代理主动进行阻止,以阻止劣质机器人忽略 robots.txt