Beautiful soup:提取两个标签之间的所有内容

2024-03-21

我正在使用 BeautifulSoup 从 HTML 文件中提取数据。我想获取两个标签之间的所有信息。这意味着如果我有一个像这样的 HTML 部分:

<h1></h1>
Text <i>here</i> has no tag
<div>This is in a div</div>
<h1></h1>

然后,如果我想要第一个 h1 和第二个 h1 之间的所有信息,输出将如下所示:

Text <i>here</i> has no tag
<div>This is in a div</div>

我尝试过 nextsibling 循环,但似乎总是有一个问题。 beautifulsoup 中是否有一个命令可以简单地提取元素“A”和元素“B”之间的所有内容(文本、换行符、div、特殊字符)?


一种解决方案是.extract()第一个前面的所有内容<h1>第二次之后<h1> tag:

from bs4 import BeautifulSoup


html_doc = '''
This I <b>don't</b> want
<h1></h1>
Text <i>here</i> has no tag
<div>This is in a div</div>
<h1></h1>
This I <b>don't</b> want too
'''

soup = BeautifulSoup(html_doc, 'html.parser')

for c in list(soup.contents):
    if c is soup.h1 or c.find_previous('h1') is soup.h1:
        continue
    c.extract()

for h1 in soup.select('h1'):
    h1.extract()

print(soup)

Prints:

Text <i>here</i> has no tag
<div>This is in a div</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Beautiful soup:提取两个标签之间的所有内容 的相关文章

  • 将 Django 表单中的所有 CharField 表单字段输入转换为小写

    我使用 Django 表单进行用户注册 用户可以在其中输入优惠券代码 我希望在优惠券代码字段中输入的所有字符都转换为小写 我尝试过在保存方法 自定义清理方法和自定义验证器中使用 lower 但这些方法没有运气 下面是我的代码 class S
  • 如何用xlrd读取公式

    我正在尝试做一个解析器 它读取几个 Excel 文件 我通常需要位于行底部的值 您可以在其中找到所有上部元素的总和 因此 单元格值实际上是 sum 或 A5 0 5 可以说 对于使用 Excel 打开此文件的用户来说 它看起来像一个数字 这
  • 如何在 openpyxl 中设置或更改表格的默认高度

    我想通过openpyxl更改表格高度 并且我希望首先默认一个更大的高度值 然后我可以设置自动换行以使我的表格更漂亮 但我不知道如何更改默认高度 唯一的到目前为止 我知道更改表格高度的方法是设置 row dimension idx heigh
  • 基于 True/False 值的 Python 优雅赋值

    我想根据三个布尔值中的值设置一个变量 最直接的方法是 if 语句后跟一系列 elif if a and b and c name first elif a and b and not c name second elif a and not
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • 使用 Python 解析 XML,解析外部 ENTITY 引用

    在我的 S1000D xml 中 它指定了一个带有对公共 URL 的引用的 DOCTYPE 该 URL 包含对包含所有有效字符实体的许多其他文件的引用 我使用 xml etree ElementTree 和 lxml 尝试解析它并得到解析错
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 熊猫记忆

    我有冗长的计算 我重复了很多次 因此 我想使用记忆 诸如jug http packages python org Jug and joblib http packages python org joblib memory html 与Pan
  • 如何检查包含 NaN 的列表 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在我的 for 循环中 我的代码生成一个如下所示的列表 list 0 0 0 0 sum 0 0 0 0 该循环生成所有其他数字向量 但它也
  • 仅使用 CSS 向电话号码添加空格

    我有一个生成 HTML 电话号码的页面 如下所示 div class phone 01987123456 div 我想要的只是在数字内添加一个空格 如下所示 01987 123456 生成的数字和 HTML 始终相同 但我只能访问客户端代码
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • Python time.sleep - 永不醒来

    我认为这将是那些简单的问题之一 但它让我感到困惑 停止媒体 我是对的 找到了解决方案 查看答案 我正在使用 Python 的单元测试框架来测试多线程应用程序 很好而且很直接 我有 5 个左右的工作线程监视一个公共队列 以及一个为它们制作工作
  • 在 Python 中,如何获取特定文件中定义的类列表?

    如果一个文件myfile py包含 class A object Some implementation class B object Some implementation 我如何定义一个方法 以便在给定的情况下myfile py 它返回
  • django如何将字符串转换为模块?

    我试图了解 django 的另一个神奇之处 它可以将字符串转换为模块 In settings py INSTALLED APPS声明如下 INSTALLED APPS django contrib auth django contrib c
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • HTML 文本框,自动突出显示文本

    我将如何制作一个包含预先存在的文本的文本框 当用户在其中单击时 其中的所有文本都会突出显示 例如 YouTube 在其视频上使用嵌入代码的文本框的方式相同 谢谢 如果我正确理解你的问题 你可以使用一些javascript 未经测试的代码
  • Python列表对象属性“append”是只读的

    正如标题所说 在Python中 我试图做到这一点 以便当有人输入一个选择 在本例中为Choice13 时 它会从密码列表中删除旧密码并添加新密码 passwords mrjoebblock mrjoefblock mrjoegblock m
  • Python 中的迭代器 (iter()) 函数。 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于字典 我可以使用iter 用于迭代字典的键 y x 10 y 20 for val in iter y print val 当
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik

随机推荐

  • OpenCv:查找多个匹配项

    我有以下内容 但我不知道如何找到源图像中的所有匹配项 static void Main using var template Cv LoadImage images logo png LoadMode GrayScale using var
  • 如何通过Intent接收int

    我通过 Intent 传递一个 int 但我不知道如何接收它 因为我必须从 OnCreate 方法接收一个 Intent 但如果我将它放在那里 我无法将它与代码其余部分中的另一个 int 进行比较 我在这里发送意图 public class
  • NUnit 与 Debug.Assert 冲突

    我正在使用 NUnit 为我的同事编写的库编写单元测试 他的库包含大量在无效输入时触发的 Debug Asserts 当我编写单元测试并向他的库提供无效输入时 他的 Debug Assert 会弹出一个消息框 抱怨输入错误 我觉得他的库对无
  • 从线程返回值

    在 Python 中 如何让线程将元组或我选择的任何值返回给父级 我建议你实例化一个队列 队列 http docs python org library queue html highlight queue Queue Queue在启动线程
  • Android JUnit4 测试

    我想运行一些 JUnit4 测试 该代码依赖于一些Android库 Android XML解析器 但不创建任何activites等 当我尝试运行测试时 我发现找不到我需要的 Android 类 有没有办法使用 Android 代码运行 JU
  • Makefile 在目标体中设置全局变量

    我想通过一个配方设置一个全局变量 然后在另一个配方中引用该变量独立的 recipe 下面的代码是在配方内设置变量的示例代码 但如果在配方外部引用 则变量将保持初始值 ACTIVE a switch ifeq ACTIVE b ACTIVE
  • 使用 NLTK 解析 CoNLL-U 文件

    我知道有CoNLL U https universaldependencies org docs format htmlPython 中的解析器 我只是想得到确认NLTK没有解析 CoNLL U 或具有依赖语法的其他 CoNLL 格式 的本
  • Slack 的 Azure DevOps 扩展是否会受到更改 Azure DevOps URL 的影响?

    在公司 我们将 Azure Devops 工作区的 URL 从https oldname visualstudio com to https dev azure com newname 我们使用两种方法与 Azure DevOps 中的 S
  • 单核上的多线程有什么意义?

    我最近一直在研究 Linux 内核 并回顾了大学操作系统课程的时代 就像那时一样 我正在玩线程之类的东西 一直以来我一直假设线程是自动在多个核心上同时运行但我最近发现您实际上必须显式编写代码来处理多个核心 那么单核上的多线程有什么意义呢 我
  • Spring Cloud 2020.0 不再处理 bootstrap.yml 配置

    In my Spring Boot 项目 https github com pavankjadda HashiCorpVault SpringCloud 我定义了4个配置文件 demo dev test prod 在启动过程中 YAML 文
  • Web服务/API来抓取另一个网站的屏幕截图? (已知的解决方案太慢)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 选择另一个相关列的总计为 0 的列

    我有一张桌子叫xDays设置如下 Project Name Date Hours proj1 2010 03 03 00 00 00 000 0 proj1 2010 03 04 00 00 00 000 0 proj1 2010 03 0
  • Sitecore - 多站点错误页面处理

    我有一个多站点 Sitecore 项目 我知道如何通过 webconfig 的 ErrorPage ItemNotFoundUrl LayoutNotFoundUrl LinkItemNotFoundUrl 处理一个站点的错误页面 但是 我
  • Symfony 4:加载 Web 调试工具栏时发生错误

    我在 CentOS 上工作 我已经按照教程进行操作 http symfony com doc current best practices creating the project html http symfony com doc cur
  • 主返回后出现分段错误

    主函数返回后我收到分段错误 我已注释掉屏幕上显示的最后一项下方的所有内容 那是没有用的 因此 我不确定该怎么做 因为堆栈似乎没有损坏 而且我绝对不会超出任何数组的范围 因为我很确定我已经检查过这一点 任何帮助都会很棒 谢谢 乔 我的代码是
  • 在 FreeRADIUS C 模块中以编程方式将 VSA(供应商特定属性)添加到访问接受回复

    我有一个 FreeRADIUS C 语言模块 它实现 MOD AUTHENTICATE 和 MOD AUTHORIZE 方法以用于自定义身份验证目的 我需要能够以编程方式将 VSA 添加到访问接受回复中 我对 radius pair cre
  • 将工作表复制到新工作簿(一张工作表)而不打开它

    我想将一张工作表从 ActiveWorkbook 复制到New创建了工作簿 新创建的工作簿将包含复制的工作表ONLY 我也不希望在复印纸张时打开它 我想将工作表静默复制到新创建的工作簿中 如果我执行类似以下操作 新创建的书有 3 页 而不是
  • Firebase 部署不断给我一个错误:remoteconfig.template.json 中的解析错误

    我正在尝试使用 firebase 部署 Web 应用程序 但每次运行部署时我都会收到此错误 Error Parse Error in remoteconfig template json No data empty input at 1 1
  • kafka.errors.KafkaTimeoutError:KafkaTimeoutError:60.0秒后无法更新元数据

    我启动一个 docker 容器来运行 Kafka 服务器 docker run p 2181 2181 p 9092 9092 env ADVERTISED HOST 192 168 99 100 env ADVERTISED PORT 9
  • Beautiful soup:提取两个标签之间的所有内容

    我正在使用 BeautifulSoup 从 HTML 文件中提取数据 我想获取两个标签之间的所有信息 这意味着如果我有一个像这样的 HTML 部分 h1 h1 Text i here i has no tag div This is in