Ram*_*hum 53 python http urllib2
尝试urlopen
维基百科的某个页面时,我有一个奇怪的错误.这是页面:
http://en.wikipedia.org/wiki/OpenCola_(drink)
这是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
Run Code Online (Sandbox Code Playgroud)
这发生在我不同大陆的两个不同系统上.有谁知道为什么会这样?
Joc*_*zel 124
数据检索:对于与批准的机器人任务没有直接关系的任何用途,Bots不得用于检索批量内容.这包括从其他网站动态加载页面,这可能导致网站被列入黑名单并被永久拒绝访问.如果您想下载批量内容或镜像项目,请下载或托管您自己的数据库副本.
这就是Python被阻止的原因.你应该下载数据转储.
无论如何,你可以在Python 2中阅读这样的页面:
req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"})
con = urllib2.urlopen( req )
print con.read()
Run Code Online (Sandbox Code Playgroud)
或者在Python 3中:
import urllib
req = urllib.request.Request(url, headers={'User-Agent' : "Magic Browser"})
con = urllib.request.urlopen( req )
print con.read()
Run Code Online (Sandbox Code Playgroud)
S.L*_*ott 10
要调试它,您需要捕获该异常.
try:
f = urllib2.urlopen('http://en.wikipedia.org/wiki/OpenCola_(drink)')
except urllib2.HTTPError, e:
print e.fp.read()
Run Code Online (Sandbox Code Playgroud)
当我打印生成的消息时,它包括以下内容
"英语
我们的服务器目前遇到技术问题.这可能是暂时的,应尽快解决.请在几分钟后再试一次."
网站通常会通过检查是否由公认的用户代理访问来过滤访问.维基百科只是将您的脚本视为机器人并拒绝它.尝试欺骗浏览器.以下链接将为您提供一篇文章,向您展示如何.
http://wolfprojects.altervista.org/changeua.php
归档时间: |
|
查看次数: |
65937 次 |
最近记录: |