无法向SO发出http get请求

Gau*_*pta 1 http http-status-code-403

我在python中有一段代码可以生成http get请求.我可以成功地向http://google.com等网址发送请求并下载他们的网页.但我无法向http://stackoverflow.com提出请求.它显示HTTP 403禁止ERROR.但是我可以从浏览器访问stackoverflow.那么这个错误的原因是什么呢?

码:

import urllib2
c = urllib2.urlopen(' https://stackoverflow.com/ ')
contents = c.read()
print contents [0:50]

错误: HTTPError:HTTP错误403:禁止

csh*_*shu 6

同样在这里,我正在使用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'}))
Run Code Online (Sandbox Code Playgroud)

因此,似乎stackoverflow.com根据用户代理过滤请求,而google.com不会这样做.

urllib2的默认用户代理字符串是"Python-urllib/2.6"(在Python 2.6上)

资料来源:https://docs.python.org/2/library/urllib2.html