gpt4 book ai didi

python - 陷入异常循环

转载 作者:行者123 更新时间:2023-11-30 23:31:27 25 4
gpt4 key购买 nike

我正在解析从链接列表返回的 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

最佳答案

不,你的诊断不正确,这里没有无限的异常循环。每个 URL 都是一个完全独立的异常(exception)。

每当出现异常时,cntr 变量都不会更新,这可能会给您一种最终陷入异常循环的印象。将 try: 语句的 cntr += 1移出,或者使用 enumerate() 生成为您准备的柜台。

也就是说,为什么要尝试使用一个解析器实例来解析多个 HTML 页面?您不断收到的异常很可能是特定页面格式错误并将解析器置于无法继续的状态。

关于python - 陷入异常循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com