>>> print urllib2.urlopen('http://zh.wikipedia.org/wiki/%E6%AF%9B%E6%B3%BD%E4%B8%9C').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
答案 0 :(得分:6)
您需要像提供的那样提供用户代理else you'll get a 403。
在维基媒体wiki上,如果您不提供User-Agent标头,或者您 提供空的或通用的,您的请求将失败并使用HTTP 403错误。 See our User-Agent policy。其他MediaWiki安装 可能有类似的政策。
所以只需在代码中添加一个用户代理,就可以了。
答案 1 :(得分:1)
尝试下载wget
cURL
的页面
如果你不能,那么你可能会遇到网络问题
如果可以,那么维基百科可能会阻止某些用户代理。在这种情况下,使用urllib2的add_header来定义自定义用户代理(模仿浏览器请求)。