1

我正在编写一个Python 2.7下载网页的脚本。大多数时候,一切都按计划进行。鉴于此脚本有数千个网页可供下载,因此不可避免地会出现几次不成功的情况。URLError如果出现 a或 an ,脚本会放弃并继续前进HTTPError,但有时一切都会挂起,需要手动点击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 以外的东西吗?

4

2 回答 2

1

确保您使用的是 urllib2

from urllib2 import urlopen
try:
    f = urlopen (url, timeout=10)
except urllib2.URLError:
    # try again later
于 2012-11-28T05:09:01.183 回答
0

如果你做 http 请求,我强烈推荐使用 requests 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

希望这可以帮助。

干杯

标记

于 2012-11-28T05:12:41.233 回答