beautiful soup 4.0(bs4)搜索文档树(3)

本文详细介绍了Beautiful Soup库中用于搜索文档树的方法,包括find和find_all,以及各种过滤器的使用,如字符串过滤、正则表达式、列表和自定义方法。通过实例展示了如何高效地在HTML或XML文档中查找特定元素。
摘要由CSDN通过智能技术生成

1、概述

在上一篇文章中,主要介绍遍历文档树的方法。遍历文档树主要从文档的根节点开始,对文档进行逐一扫描。这是文档解析中一个非常重要的操作。除了这个操作之外,还有一个非常重要方式就是搜索文档树,搜索文档树并不是从根节点开始逐一的对文档进行操作,而是直接在整个文档中检索到我们需要节点以及内容。比如我们想获取一个文档的标题,可以直接索搜title标签,而不需要从本届点逐个进行遍历操作。

2、搜索文档树

搜索文档树的操作主要依靠以下两个方法来实现。

  • find
  • find_all

两个方法的使用方法基本相同,只是在数据返回上存在一定差别。find方法只返回符合条件的所有元素中的第一个,而find_all()方法会返回符合条件的所有元素。下面将详细介绍使用这两个方法搜索文档树的细节。

所谓细节就是可以使用哪些内容所谓搜索条件对整体文档树进行搜索。

2.1 过滤器

过滤器贯穿整个搜索的API.过滤器可以被用在tag的name中,节点的属性中,字符串中或他们的混合中。

2.1.1 字符串过滤器

最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容,下面的例子用于查找文档中所有的<p>标签,请参考如下代码:

for _p in soup.find_all('p'):
    print(_p.name)

2.1.2 正则表达式过滤器

如果传入正则表达式作为参数,Beautiful Soup会通过正则表达式的 match() 来匹配内容。如果我们想搜索文章中所有的H标签包含(H1-H6)可以使用此过滤器,请参考如下代码:

import re
for _p in soup.find_all(re.compile("^h[1-6]")):
    print(_p.name)

输出结果如下图所示:

2.1.3 列表

如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有<a>标签和<b>标签,请参考如下代码:

for _p in soup.find_all(['a','b']):
    print(_p.name)

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值