我有一個簡單的函數(在python 3中)獲取一個url並嘗試解決它:打印錯誤代碼(如果有)(例如404)或解析其中一個縮短網址到完整的網址。我的網址位於csv文件的一列中,輸出保存在下一列中。問題出現在程序遇到一個URL,服務器花費很長時間來響應 - 程序崩潰。如果服務器耗時過長,是否有一種簡單的方法可以強制urllib打印錯誤代碼。我看着Timeout on a function call,但這看起來有點太複雜,因爲我剛剛開始。有什麼建議麼?當頁面需要太長的響應時間時urllib請求失敗
即(COL A)SHORTURL(COL B)http://deals.ebay.com/500276625
def urlparse(urlColumnElem):
try:
conn = urllib.request.urlopen(urlColumnElem)
except urllib.error.HTTPError as e:
return (e.code)
except urllib.error.URLError as e:
return ('URL_Error')
else:
redirect=conn.geturl()
#check redirect
if(redirect == urlColumnElem):
#print ("same: ")
#print(redirect)
return (redirect)
else:
#print("Not the same url ")
return(redirect)
編輯:如果有人得到http.client.disconnected錯誤(比如我),看到這個問題/答案http.client.RemoteDisconnected error while reading/parsing a list of URL's
這部分工作,但我只是得到一個超時錯誤,程序退出,而不是等待更長的時間。 142 追溯(最近呼叫最後): ... socket.timeout:超時 –
我已更新我的答案,超時引發一個'socket.timeout'異常 –
是的,我得到了兩個結合答案底端。對於任何初學者,還需要導入套接字線才能工作謝謝! –