2012-11-28 21 views
1

我正在處理下載網頁的Python 2.7中的腳本。大多數情況下,一切都按計劃進行。鑑於這個腳本有數以千計的網頁可供下載,當事情不能解決時,不可避免地會出現幾次。腳本在URLErrorHTTPError事件中放棄並繼續前進,但有時候一切都會掛起,並且需要手動敲擊Ctrl-ZCtrl-C才能停止此操作。有問題的代碼:如何在Python中獲得urlopen命令以放棄並繼續前進?

f = urlopen (url) 
    local_file = open (file_name, 'w') # Open local file 
    local_file.write (f.read()) 
    local_file.close() 

我試過signal.alarm,但它並不總是工作。我嘗試了urlopen中的超時參數,但這不起作用。

是否有一種可靠的方法來確保腳本在幾秒鐘後自動放棄並繼續移動?我應該使用urlopen以外的東西嗎?

+0

退房此鏈接http://www.daniweb.com/software-development/python/threads/182555/how-to-set-timeout-for-reading-from -urls合的urllib# – avasal

回答

1

確保您使用的urllib2

from urllib2 import urlopen 
try: 
    f = urlopen (url, timeout=10) 
except urllib2.URLError: 
    # try again later 
0

如果你做的http請求,我強烈建議使用請求Python庫。你會發現它更容易使用,更強大。像你想

import requests 

try: 
    response = requests.get(url) 
    local_file = open(file_name, 'w') # Open local file 
    local_file.write(response.content) 
    local_file.close() 
except requests.ConnectionError: 
    pass 

希望這有助於

$: pip install requests 

代碼做一些事情:它可以在這裏

找到要安裝和使用。

乾杯

馬克

相關問題