我在python中有一段代码可以生成http get请求。 我可以成功地向http://google.com这样的网址发送请求并下载他们的网页。但我无法向http://stackoverflow.com提出请求。它显示HTTP 403禁止ERROR。 但是我可以从浏览器访问stackoverflow。那么这个错误的原因可能是什么?
的代码:
import urllib2
C = urllib2.urlopen(' https://stackoverflow.com/')
内容= c.read()
打印内容[0:50]
错误:的 HTTPError:HTTP错误403:禁止
答案 0 :(得分:5)
在这里,我正在使用Python 3。
urllib.request.urlopen('http://stackoverflow.com')
因HTTP错误403失败。
我更改了User-Agent,然后它工作了:
import urllib.request
urllib.request.urlopen(urllib.request.Request('http://stackoverflow.com/',headers={'User-Agent':'Mozilla/5.0'}))
所以看来stackoverflow.com会根据用户代理过滤请求,而google.com也不会这样做。
urllib2的默认用户代理字符串是“Python-urllib / 2.6”(在Python上 2.6)