我已经开发了一部分代码,我从网络抓取中使用:
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当我重新运行代码时,我不会再次得到这个链接的错误,而是其他链接的错误。这会不会是因为无线连接?
发布于 2013-08-16 20:24:23
这看起来像是DNS或网络问题。如果您针对相同的URL多次运行相同的代码,并且有时有效,有时无效,那么问题可能不在于您的代码。
要调试该问题,您可以在语句周围执行try-except块,并从那里启动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。)
https://stackoverflow.com/questions/18273051
复制相似问题