BeautifulSoup 类通过查找方法选取节点

news2024/10/7 18:19:53
        BeautifulSoup 类提供了一些基于 HTML XML 节点树选取节点的方法,其中比较主流
的两个方法是 find() 方法和 find_all() 方法。 find() 方法用于查找符合条件的第一个节点; find_all()
方法用于查找所有符合条件的节点,并以列表的形式返回。
        由于 find() 方法和 find_all() 方法的参数相同,所以我们这里以 find_all() 方法为例进行介绍。
find_all() 方法的声明如下。
find_all(self, name=None, attrs={}, recursive=True, text=None,
limit=None, **kwargs)
        上述方法包含了多个参数,每个参数接收值的类型不同,查找到的结果也会有所不同。
接下来,分别对上述方法中的每个参数进行介绍。
            ❤❤ 喜欢的就点个关注哦--------帅哥美女们! ❤❤

1.参数 name

        参数 name 表示待查找的节点名称,它支持字符串、正则表达式、列表 3 种类型的取值。
1 )若值为字符串,则会查找名称与字符串完全相同的所有节点。例如,使用 4.4.2 节创
建的 soup 对象调用 find_all() 方法查找名称为 title 的节点,代码如下。
soup.find_all('title')
查找的结果如下。
[<title>The Dormouse's story</title>]
2 )若值为正则表达式,则会查找名称符合正则表达式模式的所有节点。例如,使用 soup
对象调用 find_all() 方法查找 id 属性值中含有 link1 关键字的所有节点,代码如下。
soup.find_all(id=re.compile("link1"))
查找的结果如下。
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
3 )若值为列表,则会查找名称与列表中任一元素相同的所有节点。例如,使用 soup
象调用 find_all() 方法查找所有名称为 title a 的节点,代码如下。
soup.find_all(["title", "a"])
查找的结果如下。
[<title>The Dormouse's story</title>, <a class="sister" href="http://example.
com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie"
id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">
Tillie</a>]

2.参数 attrs

参数 attrs 表示待查找的属性节点,它接收一个字典,字典中的键为属性名称,值为该属
性对应的值。例如,使用 soup 对象调用 find_all() 方法查找属性名称为 id 、值为 link1 的节点,
代码如下。
soup.find_all(attrs={'id':'link1'})
查找的结果如下。
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]

3.参数 recursive

参数 recursive 表示是否对当前节点的所有子孙节点进行查找,其默认值为 True 。如果只
需要对当前节点的直接子节点进行查找,则可以将参数 recursive 的值设为 False 。例如,使用
soup 对象调用 find_all() 方法查找直接子节点 head ,代码如下。
soup.html.find_all("head", recursive=False)
查找的结果如下。
[<head><title>The Dormouse's story</title></head>]

4.参数 text

参数 text 表示待查找的文本节点,它也支持字符串、正则表达式、列表 3 种类型的取值,
具有与 name 参数相同的用法。例如,使用 soup 对象调用 find_all() 方法查找所有文本为 Elsie
的节点,代码如下。
soup.find_all(text="Elsie")
查找的结果如下。
['Elsie']

5.参数 limit

参数 limit 表示待查找的节点数量。当在节点树中查找节点时,如果节点树非常大,那么
查找的速度会非常慢。此时若不需要选取所有符合要求的结果,可以给参数 limit 指定值以限
制结果的数量。一旦数量超过了参数 limit 的值,就会停止查找。参数 limit SQL 语句中的
limit 子句具有类似的功能,都可以限制查找结果的最大数量。
例如,使用 soup 对象调用 find_all() 方法查找至多 1 个节点 a ,代码如下。
soup.find_all("a", limit=1)
查找的结果如下。
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]

6.参数**kwargs

参数 **kwargs 支持以关键字形式传递的任意一个参数。在节点树中查找节点时,会将关
键字参数的名称作为节点的属性名称,值作为属性值。例如,使用 soup 对象调用 find_all()
法查找属性名称为 id 、值为 link3 的节点,代码如下。
soup.find_all(id='link3')
查找的结果如下。
[<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
当我们要查找的节点名称为 class 时,由于 class 属于 Python 中的关键字,所以我们需要
class 的后面加上一条下画线。示例代码如下。
soup.find_all("p", class_="title")
查找的结果如下。
[<p class="title"><b>The Dormouse's story</b></p>]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第三十五天(dp)|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 文档讲解&#xff1a;代码随想录 状态&#xff1a;so easy 思路&#xff1a;最简单的递归就不说了。使用动态规划的话&#xff0c;状态转移方程 dp[i] dp[i - 1] dp[i - 2] 题解&#xff1a; public int fib(int n) {…

miniconda 弹出黑窗

etc\conda\activate.d 和 envs 中不同环境中的 etc\conda\activated.d&#xff0c;只保留下图中的三个文件即可。

综合项目实战--jenkins节点模式

一、DevOps流程 DevOps是一种方法论,是一系列可以帮助开发者和运维人员在实现各自目标的前提下,向自己的客户或用户交付最大化价值及最高质量成果的基本原则和实践,能让开发、测试、运维效率协同工作的方法。 DevOps流程(自动化测试部分) DevOps完整流程 二、gitee+j…

Leica Cyclone 3DR2024 一款功能强大的点云建模软件下载License获取

Leica Cyclone 3DR 2024 是一款功能强大的点云建模软件&#xff0c;使用旨在为用户提供全面的点云管理、自动化的点云分析&#xff0c;结合强大的建模&#xff0c;在一个直观友好的环境中&#xff0c;专注的完成挑战&#xff0c;提高生产力&#xff0c;轻松创建并交付专业的成果…

AWTK 用 icon_at 属性设置图标位置

1. style 在 style 文件中通过 icon_at 属性设置图标位置。 <style name"right_bottom" icon_at"right_bottom"><normal icon"unchecked_right_bottom" /><pressed icon"unchecked_right_bottom" /><over i…

揭开大语言模型(LLM)内部运作的算法逻辑

本文探讨了 Anthropic 的突破性技术&#xff0c;以揭示大型语言模型 (LLM) 的内部工作原理&#xff0c;揭示其不透明的本质。通过深入研究LLM Claude Sonnet 的“大脑”&#xff0c;Anthropic 增强了人工智能的安全性和可解释性&#xff0c;为人工智能的决策过程提供了更深入的…

语言模型:文本表征词嵌入技术调研

1 文本表征 文本表征是自然语言处理中的关键部分&#xff0c;尤其在当前大模型快速发展的背景下。由于大模型存在知识有限、处理文本长度有限、保密要求和大模型幻觉等问题&#xff0c;结合外部数据显得尤为重要。 为了便于存储和检索&#xff0c;除了保存纯文本外&#xff0…

机器学习基础:开源库学习-Numpy科学计算库

目录 Numpy科学计算库 什么是多维数组 数组基础 高维数组 操作和创建数组 Numpy介绍 创建数组 数组的属性 二维数组 三维数组 数组元素的数据类型 创建特殊的数组 np.arange() np.ones() np.zeros() np.eye() np.linspace() np.logspace() asarray() 数组运…

数据结构—判断题

1.数据的逻辑结构说明数据元素之间的顺序关系&#xff0c;它依赖于计算机的存储结构。 答案&#xff1a;错误 2.(neuDS)在顺序表中逻辑上相邻的元素&#xff0c;其对应的物理位置也是相邻的。 答案&#xff1a;正确 3.若一个栈的输入序列为{1, 2, 3, 4, 5}&#xff0c;则不…

模拟城市5: 未来之城 全DLC for Mac 下载安装包

模拟城市5&#xff1a;未来之城&#xff08;SimCity BuildIt&#xff09;是一款由Maxis开发并由 Electronic Arts&#xff08;EA&#xff09;发行的城市建设和管理模拟游戏。这款游戏最初在2014年发布&#xff0c;适用于iOS、Android以及Windows Phone平台&#xff0c;随后在20…

每天五分钟计算机视觉:人体姿势识别

本文重点 人体姿势识别是计算机视觉领域的一个重要研究方向,旨在通过图像或视频数据自动检测并识别出人体的各种姿势和动作。随着深度学习技术的快速发展,基于神经网络的方法在这一领域取得了显著进展。神经网络,特别是卷积神经网络(CNN)和循环神经网络(RNN),因其强大…

NVIDIA Visual Profiler启动失败报错

在银河麒麟V10安装完NVIDIA后&#xff0c;想着试着运行一下NVIDIA Visual Profiler&#xff0c;发现报错&#xff0c;如下图。 照着提示翻阅日志文件。看见其中写着 !ENTRY com.nvidia.viper.birt 2 0 2024-06-30 08:39:39.806 !MESSAGE Could not resolve module: com.nvidi…

【保姆级教程+配置源码】在VScode配置C/C++环境

目录 一、下载VScode 1. 在官网直接下载安装即可 2. 安装中文插件 二、下载C语言编译器MinGW-W64 三、配置编译器环境变量 1. 解压下载的压缩包&#xff0c;复制该文件夹下bin目录所在地址 2. 在电脑搜索环境变量并打开 3. 点击环境变量→选择系统变量里的Path→点击编…

内容营销专家刘鑫炜:碎片化时代,小微企业内容营销如何乘风破浪

当下&#xff0c;互联网高度发达&#xff0c;技术的飞速进步和社交媒体的普及&#xff0c;使得信息的产生和传播速度达到了前所未有的高度。互联网上的内容如同潮水般汹涌而来&#xff0c;不断刷新着我们的认知边界&#xff0c;但与此同时&#xff0c;这也导致了人们的注意力被…

SpringBoot:集成机器学习模型进行预测和分析

引言 机器学习在现代应用程序中扮演着越来越重要的角色。通过集成机器学习模型&#xff0c;开发者可以实现智能预测和数据分析&#xff0c;从而提高应用程序的智能化水平。SpringBoot作为一个强大的框架&#xff0c;能够方便地集成机器学习模型&#xff0c;并提供灵活的部署和…

各省地区市场化指数及分项指数+匹配上市公司+计算代码(1997-2023年)

数据简介&#xff1a;市场化指数是一个用于评估国家市场化程度的指标体系。该指数由中国经济学家樊纲提出&#xff0c;旨在衡量中国经济中市场化的程度和质量。 市场化指数包括经济自由度、金融市场化、行政干预程度以及社会保障水平等四个方面的指标。 其中&#xff0c;经济…

有关主流编程语言的几个问题及对比

参考&#xff1a;编程语言的历史&#xff08;https://blog.csdn.net/david_lv/article/details/104765347&#xff09; 静态与动态语言的优缺点分析 什么是强类型&#xff0c;什么是弱类型&#xff1f;哪种更好些&#xff1f;为什么? 强类型和弱类型的区别 几种常见的开发语言…

Springboot学习中错误与解决方法合集

1. 报错CONDITIONS EVALUATION REPORT &#xff08;1&#xff09;现象 类似&#xff1a; 出现问题原因&#xff1a;日志文件过多 &#xff08;2&#xff09; 解决方法&#xff1a; 在application.yml配置文件中增加 logging:level:org.springframework.boot.autoconfigure…

ComfyUI效率节点Efficient示例

文生图工作流 Efficient Loader节点用于高效加载和缓存模型 ckpt_name&#xff1a;选择要加载的检查点模型的名称。通常选择你的主要模型名称 vae_name&#xff1a;定义要使用的VAE&#xff08;变分自编码器&#xff09;模型。一般选择与你的主要模型匹配的VAE&#xff0c;或者…

OpenGL3.3_C++_Windows(24)

渲染平行光阴影 阴影作用&#xff1a; 有了阴影的渲染&#xff0c;更容易地区分出物体之间的位置关系&#xff0c;如何判断片段是否在阴影中&#xff1f; 普通思路&#xff1a; 以光的位置为视角进行渲染&#xff0c;我们绘制一条从光源出发的射线&#xff0c;测试更新射线经过…