如何使用 BeautifulSoup4 获取
标记之前的所有文本

2024-05-04

我正在尝试为我的应用程序抓取一些数据。我的问题是我需要一些 HTML 代码如下:

<tr>
  <td>
    This
    <a class="tip info" href="blablablablabla">is a first</a>
    sentence.
    <br>
    This
    <a class="tip info" href="blablablablabla">is a second</a>
    sentence.
    <br>This
    <a class="tip info" href="blablablablabla">is a third</a>
    sentence.
    <br>
  </td>
</tr>

我希望输出看起来像

这是第一句话。
这是第二句话。
这是第三句话。

可以这样做吗?


这当然是可能的。我会稍微笼统地回答,因为我怀疑您只想处理 HTML 块。

首先,获取一个指向td元素,

td = soup.find('td')

现在,请注意,您可以获得该元素的子元素的列表,

>>> td_kids = list(td.children)
>>> td_kids
['\n    This\n    ', <a class="tip info" href="blablablablabla">is a first</a>, '\n    sentence.\n    ', <br/>, '\n    This\n    ', <a class="tip info" href="blablablablabla">is a second</a>, '\n    sentence.\n    ', <br/>, 'This\n    ', <a class="tip info" href="blablablablabla">is a third</a>, '\n    sentence.\n    ', <br/>, '\n']

该列表中的一些项目是字符串,一些是 HTML 元素。至关重要的是,有些是br元素。

您可以首先通过查找将列表拆分为一个或多个列表,

isinstance(td_kid[<some k>], bs4.element.Tag)

对于列表中的每个项目。

然后,您可以遍历每个子列表,通过将它们变成汤来重复替换标签,然后获取这些子列表的子列表。最终,您将拥有几个仅包含 BeautifulSoup 所谓的“可导航字符串”的子列表,您可以像往常一样操作它们。

将元素连接在一起,然后我建议您使用正则表达式消除空格sub像这样:

result = re.sub(r'\s{2,}', '', <joined list>)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 BeautifulSoup4 获取
标记之前的所有文本 的相关文章

  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce

随机推荐

  • 如何从构建管道内的项目存储库中的azure存储blob下载文件(Azure DevOps)

    需要一种在构建过程中将一组文件从 Azure Blob 存储下载到项目存储库的方法 该流程的目的是对移动应用程序进行 CI CD 但是移动应用程序的图标 背景图像和一些其他图像是由其他应用程序提供的 因此在构建过程中图像应该从 blob 存
  • 访问 Spring-MVC 中的应用程序属性

    Spring MVC 的新手 我想在 properties 文件中存储两个属性 uploadFolder downloadFolder 在 HomeController 类 由 MVC 模板自动创建 中访问它 你能指导我如何 1 用上面的内
  • 自定义类上的 List.sum

    我有以下代表 GF2 字段的代码 trait GF2 def unary this def that GF2 GF2 def that GF2 GF2 def that GF2 that match case Zero gt throw n
  • 运行 istio-proxy 后启动容器/pod

    我正在尝试使用 Istio 和 Envoy 通过 Kubernetes 实现服务网格 我能够设置服务和 istio proxy 但无法控制容器和 istio proxy 的启动顺序 我的容器是第一个启动的 并尝试通过 TCP 访问外部资源
  • MSBuild 多个输出路径

    I saw this https stackoverflow com questions 14107302 msbuild copy multiple files to multiple directories repeatedlyS O
  • Java:使用反射正确检查类实例化

    我正在尝试使用最简单的反射形式之一来创建类的实例 package some common prefix public interface My void configure void process public class MyExamp
  • jQuery select2 与 WordPress

    我正在使用 jQueryselect2 https select2 org在 WordPress 内 我有一个像这样的 HTML 表格 如果用户点击我需要这里Bob SMith and admin它将转换为select2具有多项选择的下拉菜
  • 制作域中立程序集的步骤是什么?

    这些步骤也可以应用于第三方议会 可能已经是强名称的 吗 我的问题的上下文应该不重要 但无论如何我都会分享 我正在考虑制作一个记录器 或日志包装器 它始终知道要定位的 日志源 无论使用它的程序集是否是在一个应用程序域中 或分布在多个应用程序域
  • 想要显示图像

    我有一个小问题 我想要一个可以上传和显示图像的 Django 应用程序 目前 它可以上传图像 但无法显示该图像 例如 comment photo 将打印出路径C Users AQUIL Desktop myproject images P1
  • 使用ant检测操作系统并设置属性

    我想根据操作系统类型在 ant 任务中设置不同的属性 该属性是一个目录 在 Windows 中我希望它是 c flag 在 unix linux 中是 opt flag 我当前的脚本仅在使用默认目标运行时才有效 但为什么呢
  • 如何禁止一个用户访问某个文件?

    我正在尝试禁止用户打开文件 目的是当用户尝试打开特定文件时 他将无法打开 另外 我希望能够返回权限并让用户打开文件 我只找到了启用权限的方法 os chmod path 0444 但我不明白如何禁用权限 Unix 权限入门 Every fi
  • MySQL:插入被外键引用行的更新阻止

    让我用一个 SQL 示例来开始我的问题 这是表设置 创建表x and y With y x指的是x id 插入一行到x id 1 START TRANSACTION CREATE TABLE x id INT 11 NOT NULL AUT
  • Python虚拟环境包安装问题

    我正在构建一个需要 Django 的 Python 项目 我使用 virtualenv 创建了项目目录和虚拟环境 但我无法使用 PIP 安装 django 我必须使用 easy install 才能将其安装到虚拟环境中 注意 我只在 Dja
  • AWS Cloudfront 行为函数不重定向

    尝试找到一种方法将流量从我的 AWS CloudFront 页面重定向到另一个 URL 我目前正在使用 Cloudfront Functions 设置 函数 函数代码 函数名称 exampleFunction function handle
  • MD5 是否保证可与 Android 中的 MessageDigest 一起使用?

    我想知道 MD5 摘要算法是否保证在所有 Android 设备中可用 然后再直率地忽略已检查的异常MessageDigest getInstance MD5 可以扔 我越来越java security NoSuchAlgorithmExce
  • Ubuntu 上的 Docker 无法连接到本地主机,但可以连接到其 IP

    我运行的是 Ubuntu 18 04 uname r 5 3 0 46 generic 我已经安装了docker docker version Docker version 19 03 8 build afacb8b7f0 我有一个简单的
  • 从数据层中删除所有特征

    我用过类似的东西 var map function initialize map new google maps Map document getElementById map canvas zoom 4 center lat 28 lng
  • 如何使用 VBA 在 PowerPoint 中取消形状组合后按类型重新组合形状

    继我的出色回答之后上一个问题 https stackoverflow com questions 74339247 how to rename shapes within grouped groups in powerpoint with
  • 如何在两个不同的视图控制器之间传递信息?

    这是一个简单的问题 我有 2 个不同的视图控制器 每个视图控制器都有自己的数据存储在其 m 文件中 我想取一个值 例如 一个整数值 int i 3 在 ViewController 1 中声明并将其传递给 ViewController 2
  • 如何使用 BeautifulSoup4 获取
    标记之前的所有文本

    我正在尝试为我的应用程序抓取一些数据 我的问题是我需要一些 HTML 代码如下 tr td This a class tip info href blablablablabla is a first a sentence br This a