2012-11-28 16 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 

代码做一些事情:它可以在这里

找到要安装和使用。

干杯

马克

相关问题