2010-02-22 63 views
2

我使用urllib2.build_opener()从相应的url下载图片。但是对于特定的网址,我收到错误消息。当我查看该网址时,我看到没有图像。我如何检查是否有图像?这是我的代码:正在下载图片

opener1 = urllib2.build_opener() 
page1=opener1.open(orginal) 
my_picture=page1.read() 

我得到的错误是

File "suitcase.py", line 120, in <module> 
    get_suitcase() 
    File "suitcase.py", line 96, in get_suitcase 
    page1=opener1.open(orginal) 
    File "D:\Program Files\Python\lib\urllib2.py", line 395, in open 
    response = meth(req, response) 
    File "D:\Program Files\Python\lib\urllib2.py", line 508, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "D:\Program Files\Python\lib\urllib2.py", line 433, in error 
    return self._call_chain(*args) 
    File "D:\Program Files\Python\lib\urllib2.py", line 367, in _call_chain 
    result = func(*args) 
    File "D:\Program Files\Python\lib\urllib2.py", line 516, in http_error_default 

    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 404: Not Found 

如何检查的图像是存在的,与储蓄的形象继续吗?

回答

1

我不明白。为什么不用try和except关键字捕捉错误?

1

正如其他人所建议的,赶上例外并检查代码,例如

import urllib2 

opener1 = urllib2.build_opener() 
try: 
    page1=opener1.open("http://www.google.com/nosuchimage") 
    my_picture=page1.read() 
except urllib2.HTTPError,e: 
    if e.code == 404: 
     print "no such image" 
    else: 
     print "error",e 
except urllib2.URLError,e: 
    print "URLError",e 
+0

由于....当我与上面的代码测试它works..but这样文件“/usr/lib/python2.5/httplib所示新的错误.py“,第860行,在endheaders中self._send_output()文件”/usr/lib/python2.5/httplib.py“,第732行,在_send_output self.send(msg)文件中”/ usr/lib/python2。 5/httplib.py“,第699行,发送self.connect()文件”/usr/lib/python2.5/httplib.py“,第683行,在connect raise socket.error,msg IOError:[Errno socket error ](110,'连接超时')我尝试了wid Except IOError,但它不是固定的 – user244470 2010-02-22 10:34:05

+0

你是否正在使用url lib2?因超时而可能会引发urllib2.URLError?我还补充说, – 2010-02-22 11:25:27

0
try: 
    page1=opener1.open(orginal) 
except HTTPError, e: 
    if e.code == 404: # Only one of the many possible errors... 
     print "Resource does not exist" 
    raise 

my_picture=page1.read() 

也参见urllib2 - the missing manual

+1

赶上?蟒蛇无法赶上! – 2010-02-22 09:44:18

+0

@Auurag,你说得对。最近Java太多了。修正了它:) – extraneon 2010-02-22 10:01:44

+0

谢谢....当我用上面的代码测试它的工作原理..但是新的错误如下所示 文件“/usr/lib/python2.5/httplib.py”,行860,在endheaders self._send_output() 文件“/usr/lib/python2.5/httplib.py”,第732行,在_send_output中 self.send(msg) 文件“/usr/lib/python2.5/httplib.py “,第699行,发送 self.connect() 文件”/usr/lib/python2.5/httplib.py“,第683行,连接 raise socket.error,msg IOError:[Errno socket error] (110,'连接超时') 我试过wid IOException但它不是固定的 – user244470 2010-02-22 10:32:02