这是一个beautifulsoup
抓取所有内容的过程<p>
html 标签。从某些网页抓取内容后,我收到一条错误消息,指出超出了最大递归深度。
def printText(tags):
for tag in tags:
if tag.__class__ == NavigableString:
print tag,
else:
printText(tag)
print ""
#loop over urls, send soup to printText procedure
跟踪的底部:
File "web_content.py", line 16, in printText
printText(tag)
File "web_content.py", line 16, in printText
printText(tag)
File "web_content.py", line 16, in printText
printText(tag)
File "web_content.py", line 16, in printText
printText(tag)
File "web_content.py", line 16, in printText
printText(tag)
File "web_content.py", line 13, in printText
if tag.__class__ == NavigableString:
RuntimeError: maximum recursion depth exceeded in cmp
如果 printText() 遇到 NavigableString 以外的任何内容,则它会递归地调用自身。这包括 NavigableString 的子类,例如 Comment。对注释调用 printText() 会迭代注释的文本,并导致您看到的无限递归。
我建议在 if 语句中使用 isinstance() 而不是比较类对象:
if isinstance(tag, basestring):
我通过在递归之前插入打印语句来诊断这个问题:
print "recursing on", tag, type(tag)
printText(tag)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)