2014-10-01 80 views
0

我有一个包含数千个链接的大文件。我编写了一个脚本,逐行调用每个链接,并在各自的网页上执行各种分析。但是,有时候链接有问题(从网站上删除文章等),我的整个脚本就停在那个点上。在脚本中规避Python错误

有没有办法规避这个问题?这是我的(伪)代码:

for row in file: 
    url = row[4] 
    req=urllib2.Request(url) 
    tree = lxml.html.fromstring(urllib2.urlopen(req).read()) 
    perform analyses 
    append analyses results to lists 
output data 

我已经试过

except: 
    pass 

但它庄严地搅乱脚本出于某种原因。

回答

2

工作对我来说:

for row in file: 
    url = row[4] 
    try: 
     req=urllib2.Request(url) 
     tree = lxml.html.fromstring(urllib2.urlopen(req).read()) 
     perform analyses 
     append analyses results to lists 
    except URLError, e: 
     pass 
output data 
+0

你的意思是把try/except块放在for循环中吗?否则,它会停在那条线上,这正是OP想要避免的问题。 – 2014-10-01 15:07:57

+0

哦,上帝,它迟到了。我没有想100%谢谢你的支持 – 2014-10-01 15:10:46

0

Try块是要走的路:

for row in file: 
url = row[4] 
    try: 
     req=urllib2.Request(url) 
     tree = lxml.html.fromstring(urllib2.urlopen(req).read()) 
    except URLError, e: 
     continue 
    perform analyses 
    append analyses results to lists 
output data 

继续将允许你跳过任何不必要的计算,该URL检查后和下一次迭代重新启动循环