1

リダイレクトされたすべての URL を取得しようとしている数千の URL を含むテキスト ファイルがあります。これまでのところ、元の URL が行き止まりまたは壊れたリンクにリダイレクトされない限り、リダイレクトされた URL を取得する機能を達成しました。

def get_redirect_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    request = opener.open(url)
    return request.url 
with open ('textFile.txt', 'r') as myFile:
    urls = [line.strip() for line in myFile]
    redirect_urls = [get_redirect_url(url) for url in urls]
    print redirect_urls

ただし、プログラムが「ページが見つからない」または完全に空白のページになり、プログラムが失敗することがあります。これらの壊れたリンクを、プログラムからアプローチされたときに消去するか、単にバイパスすることで処理する解決策はありますか? 乾杯。前もって感謝します。

4

1 に答える 1

2

例外を処理するように関数を変更します。

def get_redirect_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    try:
        request = opener.open(url)
        return request.url
    except urllib2.HTTPError as e:
        pass # or do something

例外が発生した場合、上記を使用して返された値を取得します。Noneそのため、それらを除外するか、リスト コンプで無視することをお勧めします。

于 2013-10-11T18:22:15.880 に答える