【发布时间】:2013-11-11 15:44:23
【问题描述】:
我正在解析从链接列表返回的 HTML。当我到达每个 HTML 文档中的某个点时,我会引发一个异常。
import urllib2, time,
from HTMLParser import HTMLParser
class MyHTMLParser2(HTMLParser):
def handle_starttag(self, tag, attrs):
if somethings:
do somethings
if tag == "div" and "section2" in attrs[0][1]:
raise NameError('End')
parser2 = MyHTMLParser2()
cntr = 0
for links in ls:
try:
f = urllib2.urlopen(links)
parser2.feed(f.read())
cntr+=1
if cntr%10 == 0:
print "Parsing...", " It has benn", (time.clock()-start)/60, 'mins.'
break
except Exception, e:
print 'There has been an error Jim. url_check number', cntr
error_log.write(links)
continue
它只对第一个链接执行一次try语句,然后将异常子句执行到无穷大。
一旦引发异常,我怎样才能让它转到下一个链接
error_log 来自与urllib2 相关的其他一些错误,主要是它们似乎无法足够快地连接到网页。因此,如果有办法在不引发异常的情况下退出HTMLParser2,那就太好了。这样我就可以重新实现error_log
【问题讨论】:
-
你能打印回溯吗?
-
只捕获
Exception是个坏主意,因为这会导致您忽略意外错误。仅捕获最具体的异常类型,并且仅在您确实有理由捕获它的情况下。