我如何让 Python 中的 urlopen 命令放弃并继续前进



我正在用Python 2.7编写一个下载网页的脚本。 大多数时候,一切都按计划进行。 鉴于此脚本有数千个网页可供下载,因此不可避免地会出现几次事情无法解决的情况。 脚本在发生URLErrorHTTPError的情况下放弃并继续前进,但有时一切都会挂起,需要手动点击Ctrl-ZCtrl-C才能阻止这种情况。 有问题的代码:

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

我已经尝试过signal.alarm,但它并不总是有效。 我尝试了 urlopen 中的超时参数,但这不起作用。

有没有可靠的方法来确保脚本在一定秒数后自动放弃并继续前进? 我应该使用urlopen以外的其他东西吗?

确保您使用的是 urllib2

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

如果你做http请求,我强烈建议使用请求python库。您会发现它更易于使用且功能更强大。可以在这里找到 http://docs.python-requests.org/en/latest/

要安装和使用:

$: pip install requests

编写代码以执行您想要的操作

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

希望这有帮助。

干杯

马克

相关内容

  • 没有找到相关文章

最新更新