2013-08-16 23 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的。)

相关问题