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

        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.mzph.cn/pingmian/40686.shtml

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

相关文章

深入Spring Boot启动过程:揭秘设计模式与代码优化秘籍

Spring Boot作为一个强大的框架&#xff0c;其简化的配置和快速启动特性深受开发者喜爱。在本篇博客中&#xff0c;我们将深入探讨Spring Boot的启动过程&#xff0c;并分享一些在日常开发中可以参考的实例&#xff0c;包括工厂类的使用、设计模式的应用以及代码优化的技巧。 …

新火种AI|AI搜索挑战百度谷歌,重塑信息检索的市场?

作者&#xff1a;一号 编辑&#xff1a;美美 AI正在颠覆传统的搜索引擎市场。 随着ChatGPT等大型语言模型的火爆&#xff0c;AI搜索技术成为了公众和业界关注的焦点。这些技术不仅能够提供快速、准确的信息检索&#xff0c;还能够通过自然语言处理技术理解用户的复杂查询&am…

typescript2-类的类型

/* 输出 吃饭 游泳 */ []( )继承与多态------------------------------------------------------------------------1. 子类继承父类特征子类 extends 父类2. 当需要父类参数传递时&#xff0c;用子类也可以&#xff0c;这就是多态/* 继承&#xff1a;子类继承父类 多态…

系统级应用锁的实现方法

前言: 应用锁是一种常见的需求&#xff0c; 下面提供一个个人认为还比较完美的解决方法。本篇从两个方面详述应用锁的实现方法。 一. 流程图 二. 实现细节 一.流程图 二. 实现效果及细节

【区块链+基础设施】蜀信链 | FISCO BCOS应用案例

蜀信链是在四川省经济和信息化厅指导下&#xff0c;在四川省区块链行业协会组织下&#xff0c;由全省区块链相关从业与应用机构 共同参与建设和运营的区域性区块链基础设施&#xff0c;通过多方协同&#xff0c;共同打造合作共赢的区块链产业生态。 蜀信链区块链服务生态秉承“…

iiiiiiiiiiiiiiiiiiiiiiiiiio_contexttttttttttttttttttttttttt

https://www.cnblogs.com/bwbfight/p/17594353.html 谈一谈linux下线程池 - 白伟碧一些小心得 - 博客园 (cnblogs.com) 谈一谈linux下线程池 - 白伟碧一些小心得 - 博客园 (cnblogs.com) https://www.cnblogs.com/bwbfight/p/10901574.html 前面的设计&#xff0c;我们对asio…

中序遍历的两种实现——二叉树专题复习

递归实现&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right)…

改变conda创建虚拟环境时的默认路径(C盘)

①C:\Users\Lenovo 找到C盘中用户目录下的.condarc文件 ②打开.condarc文件后&#xff0c;添加并修改.condarc 中的 env_dirs 环境路径&#xff0c;按顺序第⼀个路径作为默认存储路径&#xff0c;也就是我的E盘&#xff08;需要你先在E盘中新建文件夹envsE&#xff09;。修改完…

智能本质:马毅教授对大模型和白盒理论的观点

引言 在人工智能的快速发展中&#xff0c;我们见证了从简单的自动化工具到复杂的智能系统的演变。随着深度学习技术的突破&#xff0c;大模型如GPT系列已经能够执行从文本生成到图像识别等多样化任务。然而&#xff0c;这些模型虽然在功能上取得了显著进展&#xff0c;但其内部…

2024年7月4日 (周四) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《最终幻想14》画面升级后 著名…

ruoyi实用性美化记录

一、将tab页中操作区的底色变为亮灰色 ruoyi-ui/src/layout/index.vue 中 <app-main/>改为<app-main style"background: #EEE"/> 二、对应的将form加上底色加边角弧度 ruoyi-ui/src/assets/styles/ruoyi.scss .el-form{border-radius: 3px;padding:…

微信小程序毕业设计-球馆预约系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【vue】实现自动轮播+滚轮控制

前言 有一个无缝轮播+滚轮控制的需求,找了很多的方法发现都没办法完美的实现这种效果。 用原生的js实现不是无缝滚动 用无缝滚动插件实现,发现pc端无法实现滚轮控制 目标 1 实现表格表无缝循环滚动 2 实现滚轮控制表格表数据滚动 3 掌握vue-seamless-scroll使用方式 一些思考…

江协科技51单片机学习- p21 LED点阵屏(8*8)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

2024 年 亚太赛 APMCM (B题)中文赛道国际大学生数学建模挑战赛 |洪水灾害数据分析 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; 完整内容可以在文章末尾领取&#xff01; 该段文字…

Spring MVC 中使用 RESTFul 编程风格

1. Spring MVC 中使用 RESTFul 编程风格 文章目录 1. Spring MVC 中使用 RESTFul 编程风格2. RESTFul 编程风格2.1 RESTFul 是什么2.2 RESTFul风格与传统方式对比 3. Spring MVC 中使用 RESTFul 编程风格(增删改查)的使用3.1 准备工作3.2 RESTFul 风格的 “查询” 所有&#xf…

git使用遇到的问题记录

文章目录 1. 记录以下问题*error: RPC failed; HTTP 307 curl 22 The requested URL returned error: 307* 1. 记录以下问题 error: RPC failed; HTTP 307 curl 22 The requested URL returned error: 307 第一种&#xff1a;clone的仓库地址或者账户密码发生改变&#xff1b;…

CentOS 7镜像列表服务下线,还想继续使用该怎么办?

目录 问题和解决方法 mirrorlist.centos.org 作用 vault.centos.org 作用 CentOS 7的生命周期已经在2024年6月30日终止&#xff08;End of Life&#xff0c;EOL&#xff09;&#xff0c;官方将不再对该版本进行问题修复、功能更新以及其他形式的维护支持。这意味着使用 Cent…

Websocket通信实战项目(js)(图片互传应用)(下)客户端H5+css+js实现

Rqtz : 个人主页 ​ 共享IT之美&#xff0c;共创机器未来 Sharing the Beauty of IT and Creating the Future of Machines Together 目录 起始 客户端GUI Javascripts连接websocket 使用localStorage保存用户输入的IP Websocket连接成功 Websocket接收数据 解析…

VC++配置Opencv库

VSOpenCVVC超详细的配置教程-CSDN博客 按照以上连接配置&#xff0c;基本上会成功 如果在cv::imshow()时报错&#xff0c;大概率是因为读取的图像为空&#xff0c;先检查图像是否为空 if(img.empty()){cout<<"图像为空"<<endl; } 如果图像为空&#…