>>> 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
问问题
502 次
2 回答
6
您需要提供一个用户代理,否则您将获得 403,就像您所做的那样。
在 Wikimedia wiki 上,如果您不提供 User-Agent 标头,或者您提供空的或通用的标头,您的请求将失败并出现 HTTP 403 错误。请参阅我们的用户代理政策。其他 MediaWiki 安装可能有类似的政策。
因此,只需将用户代理添加到您的代码中,它应该可以正常工作。
于 2012-08-05T06:19:46.547 回答
1
尝试下载带有wget
of的页面cURL
。
如果你不能,那么你可能有网络问题。
如果可以,那么维基百科可能会阻止某些用户代理。在这种情况下,使用 urllib2 的add_header来定义自定义用户代理(模仿浏览器请求)。
于 2012-08-05T06:00:06.297 回答