1

Python 2.7Web ページをダウンロードするスクリプトに取り組んでいます。ほとんどの場合、すべてが計画どおりに進みます。このスクリプトには何千もの Web ページをダウンロードする必要があるため、うまくいかないことが数回発生することは避けられません。スクリプトは aURLErrorまたはの場合にあきらめて続行しHTTPErrorますが、すべてがハングする場合があり、手動でヒットCtrl-ZするかCtrl-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 リクエストを行う場合は、リクエスト 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 に答える