Python 从FanycURLLoader获取响应代码

Python 从FanycURLLoader获取响应代码,python,Python,我正在寻找一种从url获取http响应代码的快速方法。如果代码为200',则下载图像。我可以用MyOpener`获取响应代码吗?塔恩克斯 from urllib import FancyURLopener class MyOpener(FancyURLopener): version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11' myopener

我正在寻找一种从url获取http响应代码的快速方法。如果代码为200',则下载图像。我可以用MyOpener`获取响应代码吗?塔恩克斯

from urllib import FancyURLopener
class MyOpener(FancyURLopener):
  version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'


myopener = MyOpener()
myopener.retrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 'Zindagi1976.jpg')
更新:

>>> import urllib
>>> resp = urllib.urlopen("http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg")
>>> print resp.getcode()
 403

这有什么问题,或者我把你的问题搞错了

>>> import urllib
>>> resp = urllib.urlopen("http://docs.python.org/library/urllib.html")
>>> if resp.getcode() == 200:
...     print "do my stuff"
...
do my stuff
>>>
很高兴你已经解决了这个问题。有一个原因是,
wikimedia
给出了
403
作为响应代码。原因是,一旦您发送访问wikimedia内容的请求,它就会意识到该请求不是通过
浏览器发送的,因此会抛出403错误

网站会进行这种类型的检查,以确保内容不会被机器人程序访问。还有许多其他检查,
用户代理
就是其中之一

因此,要使其看起来像浏览器发送请求一样,您可以向python代码中添加
User Agent

>>> import urllib2
>>> req = urllib2.Request('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg')
>>> useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
>>> req.add_header('User-Agent',useragent)
>>> resp = urllib2.urlopen(req)
>>> resp.getcode()
200
>>> data  = resp.read()
>>> with open("image.jpg","wb") as f:
...     f.write(data)
...
>>>

urllib
不适用于维基百科。我收到“403”错误消息。@RangRag我已经添加了
FancyURL
。现在它成功了。谢谢anyways@Richard:很高兴听到这个消息,但请看一下我的编辑。