这是一个 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)
关于python - Beautifulsoup,达到最大递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118160/