2013-10-11 29 views
1

我有一個包含幾千個URL的文本文件,其中我試圖從中獲取所有重定向的URL。到目前爲止,我已經實現了獲取重定向的URL,只要原來的URL不重定向到了山窮水盡的能力或斷裂與鏈接:Python - 處理傳遞到重定向處理程序中的破碎的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 

但是,有時在程序運行到一個「找不到網頁」或導致程序失敗的完全空白頁面。有沒有解決方案來處理這些破碎的鏈接擦除或簡單地繞過它們時,程序接近?歡呼一切。提前致謝。

回答

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使用上述其中一個異常發生回來了 - 所以你可能會想要過濾出那些或以其他方式在你的列表比較忽略它們。