2013-08-16 64 views
1

我有一個開發代號的一部分,我從網頁抓取使用:的urlopen [錯誤-2] Python的

link = 'http://www.cmegroup.com'+div.findAll('a')[3]['href'] 
user_agent = 'Mozilla/5.0' 
headers = {'User-Agent':user_agent} 
req = urllib2.Request(link, headers=headers) 
page = urllib2.urlopen(req).read() 

但是我不明白的是,有時我得到一個錯誤請求鏈接。但有時候,我不知道。例如,錯誤:

urllib2.URLError: <urlopen error [Errno -2] Name or service not known> 

出來了此鏈接:

http://www.cmegroup.com/trading/energy/refined-products/mini-european-naphtha-platts-cif-nwe-swap-futures_product_calendar_futures.html 

當我重新運行代碼,我不會再得到該鏈接的錯誤,但是對於其他一些。 這可能是由於無線連接?

回答

2

這看起來像是DNS或網絡問題。如果您多次爲同一個網址運行相同的代碼,並且它有時可以運行,但有時不運行,則問題可能不是您的代碼。

要調試的問題,您可以從那裏做一個嘗試,唯獨身邊的語句塊,並開始PDB或IPDB(如果已安裝):

try: 
    response = urllib2.urlopen(req) 
except urllib2.URLError as ex: 
    import pdb; pdb.set_trace() # Use ipdb if installed 
else: 
    page = response.read() 

然後,你可以看看的響應,狀態碼,異常跟蹤等..

(一點題外話,如果外部依賴都不是問題,我強烈建議您使用requests包代替的urllib2的。)

相關問題