Python 为什么可以';我不能为维基百科网站使用urllib2.urlopen吗?

Python 为什么可以';我不能为维基百科网站使用urllib2.urlopen吗?,python,networking,network-programming,wikipedia,Python,Networking,Network Programming,Wikipedia,可能重复: 打印urllib2.urlopen('http://zh.wikipedia.org/wiki/%E6%AF%9B%E6%B3%BD%E4%B8%9C)。读() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 urlopen中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第126行 return\u opener.open(url、数据、超时) 文件

可能重复:

打印urllib2.urlopen('http://zh.wikipedia.org/wiki/%E6%AF%9B%E6%B3%BD%E4%B8%9C)。读() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 urlopen中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第126行 return\u opener.open(url、数据、超时) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第400行,打开 响应=方法(请求,响应) http_响应中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第513行 “http”、请求、响应、代码、消息、hdrs) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第438行出错 返回自我。调用链(*args) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第372行,在调用链中 结果=func(*args) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第521行,默认为http\u error\u raise HTTPError(请求获取完整url(),代码,消息,hdrs,fp) urllib2.HTTPError:HTTP错误403:禁止
尝试下载带有
cURL
wget
的页面
如果不能,则可能存在网络问题。

如果可以,那么维基百科可能会阻止某些用户代理。在这种情况下,请使用urllib2定义自定义用户代理(以模拟浏览器请求)。

尝试使用
cURL的
wget
下载页面

如果不能,则可能存在网络问题。

如果可以,那么维基百科可能会阻止某些用户代理。在这种情况下,可以使用urllib2来定义自定义用户代理(以模拟浏览器请求)。

您需要像以前一样提供用户代理

在Wikimedia Wiki上,如果您没有提供用户代理头,或者 如果提供一个空的或通用的,您的请求将以HTTP失败 403错误。其他MediaWiki安装 可能有类似的政策


因此,只需在代码中添加一个用户代理,它就可以正常工作。

您需要像以前一样提供一个用户代理

在Wikimedia Wiki上,如果您没有提供用户代理头,或者 如果提供一个空的或通用的,您的请求将以HTTP失败 403错误。其他MediaWiki安装 可能有类似的政策


因此,只需在代码中添加一个用户代理,它就可以正常工作。

检查他们的(robots.txt)[页面以查看您使用的机器人是否是bannedcheck他们的(robots.txt)[页面以查看您使用的bot是否为banneddon不需要模拟浏览器请求,只需使用自定义用户代理即可。我在使用用户代理“elssar at elssar laptop”时获得了结果。不需要模拟浏览器请求,只需使用自定义用户代理即可。我在使用用户代理“elssar at elssar laptop”时获得了结果。
>>> 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