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')
查找的结果如下。

\The Dormouse's story\

( 2 )若值为正则表达式,则会查找名称符合正则表达式模式的所有节点。例如,使用 soup
对象调用 find_all() 方法查找 id 属性值中含有 link1 关键字的所有节点,代码如下。
soup.find_all(id=re.compile("link1"))
查找的结果如下。

\Elsie\

( 3 )若值为列表,则会查找名称与列表中任一元素相同的所有节点。例如,使用 soup 对
象调用 find_all() 方法查找所有名称为 title 和 a 的节点,代码如下。
soup.find_all(["title", "a"])
查找的结果如下。

\The Dormouse's story\, \Elsie\, \Lacie\, \ Tillie\

2.参数 attrs

参数 attrs 表示待查找的属性节点,它接收一个字典,字典中的键为属性名称,值为该属
性对应的值。例如,使用 soup 对象调用 find_all() 方法查找属性名称为 id 、值为 link1 的节点,
代码如下。
soup.find_all(attrs={'id':'link1'})
查找的结果如下。

\Elsie\

3.参数 recursive

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

\\The Dormouse's story\\

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)
查找的结果如下。

\Elsie\

6.参数**kwargs

参数 **kwargs 支持以关键字形式传递的任意一个参数。在节点树中查找节点时,会将关
键字参数的名称作为节点的属性名称,值作为属性值。例如,使用 soup 对象调用 find_all() 方
法查找属性名称为 id 、值为 link3 的节点,代码如下。
soup.find_all(id='link3')
查找的结果如下。

\Tillie\

当我们要查找的节点名称为 class 时,由于 class 属于 Python 中的关键字,所以我们需要
在 class 的后面加上一条下画线。示例代码如下。
soup.find_all("p", class_="title")
查找的结果如下。

\

\The Dormouse's story\\

相关推荐
普通网友20 天前
掌握 requests、BeautifulSoup 等库的网络爬虫基础,或使用 pandas 进行简单数据分析
爬虫·beautifulsoup·pandas
少云清23 天前
【金融项目实战】9_接口测试 _BeautifulSoup基本使用
beautifulsoup·接口测试·金融项目实战
weixin_462446231 个月前
使用 Python 批量在 HTML 文件中插入自定义 div 元素
python·beautifulsoup·自动化脚本·html 批量处理
深蓝电商API1 个月前
Selenium 与 BeautifulSoup 结合解析页面
爬虫·python·selenium·beautifulsoup
叫我:松哥1 个月前
基于scrapy的网易云音乐数据采集与分析设计实现
python·信息可视化·数据分析·beautifulsoup·numpy·pandas
喵手1 个月前
Python爬虫零基础入门【第四章:解析与清洗·第1节】BeautifulSoup 入门:从 HTML 提取结构化字段!
爬虫·python·beautifulsoup·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·beautifulsoup入门
写代码的【黑咖啡】1 个月前
Python中的BeautifulSoup:强大的HTML/XML解析库
python·html·beautifulsoup
半路_出家ren2 个月前
17.python爬虫基础,基于正则表达式的爬虫,基于BeautifulSoup的爬虫
网络·爬虫·python·网络协议·正则表达式·网络爬虫·beautifulsoup
智航GIS2 个月前
10.3 BeautifulSoup:HTMLXML 解析库
python·beautifulsoup
0思必得02 个月前
[Web自动化] BeautifulSoup导航文档树
前端·python·自动化·html·beautifulsoup