Unable to make a http get request to SO
我在python中有一段代码可以发出HTTP GET请求。我可以成功地向url(如http://google.com)发出请求并下载他们的页面。但我无法向http://stackoverflow.com发出get请求。显示HTTP 403禁止错误。但是,我可以从浏览器访问stackoverflow。那么这个错误的原因是什么呢?
代码:
进口URLILB2c=urllib2.urlopen('https://stackoverflow.com/')内容=c.读取(打印内容[0:50]
错误:HTTP错误:HTTP错误403:禁止
这里也一样,我使用的是python3。
我更改了用户代理,然后它开始工作:
1 2 | import urllib.request urllib.request.urlopen(urllib.request.Request('http://stackoverflow.com/',headers={'User-Agent':'Mozilla/5.0'})) |
因此,stackoverflow.com似乎基于用户代理过滤请求,而google.com并没有这样做。
urllib2‘s default user agent string is"Python-urllib/2.6" (on Python
2.6)
来源:https://docs.python.org/2/library/urlib2.html