当前位置: 首页 > 面试题库 >

Python的urllib2:为什么我在urlopen维基百科页面上出现错误403?

吴城
2023-03-14
问题内容

尝试urlopen从Wikipedia进入某个页面时,我遇到一个奇怪的错误。这是页面:

http://en.wikipedia.org/wiki/OpenCola_(饮料)

这是shell会话:

>>> f = urllib2.urlopen('http://en.wikipedia.org/wiki/OpenCola_(drink)')
Traceback (most recent call last):
  File "C:\Program Files\Wing IDE 4.0\src\debug\tserver\_sandbox.py", line 1, in <module>
    # Used internally for debug sandbox under external interpreter
  File "c:\Python26\Lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "c:\Python26\Lib\urllib2.py", line 397, in open
    response = meth(req, response)
  File "c:\Python26\Lib\urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "c:\Python26\Lib\urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "c:\Python26\Lib\urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "c:\Python26\Lib\urllib2.py", line 518, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

这发生在我在不同大陆的两个不同系统上。有谁知道为什么会这样?


问题答案:

维基百科的立场是:

数据检索:不得将漫游器用于与未经批准的漫游器任务没有直接关系的任何用途来检索大量内容。这包括从另一个网站动态加载页面,这可能导致该网站被列入黑名单并被永久拒绝访问。如果您要下载大量内容或镜像项目,请下载或托管您自己的数据库副本。

这就是为什么Python被阻止的原因。您应该下载数据转储。

无论如何,您可以在Python 2中阅读类似的页面:

req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib2.urlopen( req )
print con.read()

或在Python 3中:

import urllib
req = urllib.request.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib.request.urlopen( req )
print(con.read())


 类似资料:
  • 我正在尝试使用命令,但收到的回报是错误: 而且我很确定数据库中并不存在该表,因为数据库完全是空的和干净的。 我使用的是PHP 7.3和MySQL 8.0.18社区版,它们都是在Windows Server 2019上由AMPPS运行的。我用的是Laravel 8

  • 问题内容: 为什么这个简单的Python代码不起作用? 这是我得到的错误: 我已经在几个不同的页面上尝试过,但是我永远无法获得正确执行的方法。 问题答案: 您的代码不是这里的问题。 IE中是否有任何代理设置? 这表示urllib.urlopen的python文档: 在Windows环境中,如果未设置代理环境变量,则将 从注册表的“ Internet设置” 部分获取代理设置。

  • 问题内容: 如何使用除urllib2.urlopen上的默认代理之外的其他用户代理下载网页? 问题答案: 这个问题中有示例代码,但是基本上你可以执行以下操作:(请注意User-Agent,RFC 2616第14.43节的大写形式。)

  • 问题内容: 有人知道什么是“不良状态线”吗? 编辑:我尝试了许多服务器,许多URL的,我仍然收到此错误? 问题答案: 从httplib(Python 2) 的文档(在Python 3中 称为http.client)中: 例外 :( 例外 :) 的子类。 在服务器响应我们不理解的HTTP状态代码时引发。 我运行了相同的代码,但未收到错误: 我想只是仔细检查所有内容,然后重试?

  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码: