2014-07-14 73 views
0

以下代碼用於從url中取回圖像失敗。 由於某種原因,它會拋出一個KeyboardInterrupt(???),它會拋出我的腳本,即使我用try-catch將其包圍。urlgrabber發生錯誤

>>> import urlgrabber 
>>> urlgrabber.urlgrab('http://upload.wikimedia.org/wikipedia/en/thumb/e/e0/Passion_Flower.JPG/220px-Passion_Flower.JPG', filename='/home/eran/a.tmp', timeout = 2, retry = 2, reget = 'simple') 

這將創建以下跟蹤:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1098, in _hdr_retrieve 
    self.size = int(length) 
ValueError: invalid literal for int() with base 10: 'Age, Content-Length, Date, X-Cache, X-Varnish\r\n' 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1098, in _hdr_retrieve 
    self.size = int(length) 
ValueError: invalid literal for int() with base 10: 'Age, Content-Length, Date, X-Cache, X-Varnish\r\n' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 612, in urlgrab 
    return default_grabber.urlgrab(url, filename, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 976, in urlgrab 
    return self._retry(opts, retryfunc, url, filename) 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 880, in _retry 
    r = apply(func, (opts,) + args, {}) 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 962, in retryfunc 
    fo = PyCurlFileObject(url, filename, opts) 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1056, in __init__ 
    self._do_open() 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1308, in _do_open 
    self._do_grab() 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1438, in _do_grab 
    self._do_perform() 
    File "/usr/local/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1244, in _do_perform 
    raise KeyboardInterrupt 
KeyboardInterrupt 
+0

https://github.com/henrysher/urlgrabber/blob/master/urlgrabber/grabber.py#L1527 < - 請參閱 – vaultah

+0

的評論如果您只是想下載一個jpg'urllib.urlretrieve('http://upload.wikimedia.org/wikipedia/en/thumb/e/e0/Passion_Flower.JPG/220px-Passion_Flower.JPG', filename ='/ home/my.jpg')'會爲你做 –

回答

2

你爲什麼不使用要求?我認爲這很簡單,並達到你想要的。

pip install requests 

和代碼是:你可以將它安裝使用

>>> import requests 
>>> r = requests.get('http://upload.wikimedia.org/wikipedia/en/thumb/e/e0/Passion_Flower.JPG/220px-Passion_Flower.JPG') 
>>> if r.status_code == 200: 
>>>  open('/tmp/flower.jpg', 'w').write(r.content) 
+0

問題是「*爲什麼失敗*?」如果問題是「*我該如何修復它*?」,您的答案將是關鍵點。或者「*我該怎麼試試*」?就目前而言,你的文章會做出非常好的評論而不是答案。 –

+0

謝謝,羅布。得到它了。我剛來這地方。真的很感謝你的評論。 – Jorge