Beautifulsoup,达到最大递归深度

2023-11-21

这是一个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(使用前将#替换为@)

Beautifulsoup,达到最大递归深度 的相关文章

随机推荐

  • 如何限制对node.js javascript中的api的访问?

    我做了一些研究 但找不到任何能让我的案例成功的东西 所以 我正在加载 js从外部脚本require 每个脚本导出一个函数 main js var main 10 var mod1 require mod1 js mod1 js module
  • Spring 4.0 中的字符串到日期转换

    我正在学习 Spring 4 0 0 M3 以下是代码 Bean package org chebus springs import java util Date public class Traingle private String n
  • HttpServletRequest#getParts() 返回一个空列表

    我有以下 HTML 表单
  • 如何合并两个 JSON 对象数组 - 在 Javascript/jQuery 中删除重复项并保留顺序?

    jsfiddle link http jsfiddle net vN6fn 1 假设我有这两个对象 var obj1 data id 1 comment comment1 id 2 comment comment2 id 3 comment
  • Rails 上的复选框

    在 Ruby on Rails 中制作与某个问题相关的复选框的正确方法是什么 目前我有 div class form row div
  • 在ggplot2中将一个面板设为空白

    p lt ggplot mtcars aes mpg wt p geom point facet grid cyl vs theme bw 我想将面板 右下角的 1 vs 8 设为空白 不显示任何数据点 但同时 我想保留这种安排 so fa
  • Excel:如果上面的单元格具有相同的值,则抑制?

    当上面的单元格具有相同的值时 Excel 是否可以抑制列中的值 我想要这样的东西 A 1234 2345 3456 B 4567 C 5678 6789 D 7890 8901 其中 A 下面的 2 个单元格实际上是 A 但被隐藏了 理想情
  • 从模块导入的变量在再次导入同一模块后变为$null

    我有一个简单的模块 varExp psm1 var1 20 导出模块成员 变量 var1 我将此模块导入到 PS 会话中 PS gt 导入模块 varExp psm1 then PS gt var1 20 但是当我第二次导入它之后 PS g
  • 了解 Selenium IDE 与 Selenium RC

    Selenium IDE 和 Selenium RC 在功能上有什么区别 Selenium IDE 是一个 Firefox 插件 为您提供用于记录测试的基本记录器 这些测试使用关键字记录在基于 HTML 表的架构中 IDE 使您能够将代码导
  • 如何使用 php 命令行定义多个 ini 设置?

    我正在尝试允许allow url fopen and rename暂时用于脚本的函数 我可以只用一个函数来完成它 但不能同时使用两个函数 像这样的东西 php d allow url fopen on rename on
  • 为强制定向网络中的每个链接指定颜色,networkD3::forceNetwork()

    问题是根据链接的值或权重指定两种不同的颜色networkD3 forceNetwork在 R 中 例如 Blue对于大于1的链接权重 dark对于小于 1 的链接权重 示例代码 复制自here the forceNetwork部分 libr
  • 为什么 Ruby 似乎随机访问目录中的文件?

    这是设计使然吗 这是代码 class FileRenamer def RenameFiles folder path files Dir glob folder path end end puts Renaming files rename
  • Java Swing GUI 的自动化测试 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有哪些选项可以为用 Java Swing 编写的 GUI 构建自动化测试 我想测试一些使用以下代码编写的 GUINetBeans Swing GUI
  • 惰性洗牌算法

    我有一个很大的元素列表 我想以随机顺序迭代它们 但是 我无法修改该列表 也不想创建它的副本 因为 1 它很大 2 可以预期迭代会提前取消 List
  • 解析 XPath 表达式

    我正在尝试为 XPath 创建一个 AET 抽象表达式树 因为我正在编写一个 WYSIWYG XSL 编辑器 在过去的三到四个小时里 我一直在与 XPath BNF 碰头 我想到了另一个解决方案 我想我可以编写一个实现 IXPathNavi
  • 在 Android 中禁用屏幕锁定(电源)按钮

    我希望当我的应用程序运行电源按钮时 按下该按钮会锁定屏幕并且屏幕变黑 应该被禁用 使用户无法锁定屏幕 我在三星 Galaxy S 手机的默认相机应用程序中注意到了这个东西 这也是我尝试做同样事情的原因 我还有一个与相机相关的应用程序 试试这
  • vim 显示两行选项卡

    当你同时打开很多文件时 Vim 是否可以显示两行选项卡 我不希望出现选项卡溢出样式的箭头 这不完全是你所要求的 但我从使用选项卡切换到使用 BufExplorer 在它们之间切换的普通旧式多个缓冲区 http www vim org scr
  • 比较 VBA 中的日期

    我有两个文本框 有两个不同的日期 orderDate 和 receiveDate 收到的日期需要手动输入到表单中 我想包括在 orderDate 之后应该发生 receiveData 的验证 我已经尝试过 If txtRecievedDat
  • 使用相机拍摄的照片不包含任何 ALAsset 元数据

    最奇怪的事情正在发生 我有一个操作表 用户可以选择使用相机拍照或从相机胶卷中选择一张照片 当 UIImagePicker 从选择返回时 我使用 ALAssetsLibrary 来确定照片中嵌入的 GPS 信息 从相机胶卷中选择照片效果非常好
  • Beautifulsoup,达到最大递归深度

    这是一个beautifulsoup抓取所有内容的过程 p html 标签 从某些网页抓取内容后 我收到一条错误消息 指出超出了最大递归深度 def printText tags for tag in tags if tag class Na