Python3网络爬虫教程14——BeautifulSoup4之搜索文档树

2024-06-04 18:08

本文主要是介绍Python3网络爬虫教程14——BeautifulSoup4之搜索文档树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上接:
Python3网络爬虫教程13——BeautifulSoup4基本使用及遍历文档树
https://blog.csdn.net/u011318077/article/details/86633392

5.3. 搜索文档树

5.3.1. 过滤器

  • find_all()

  • find_all() 方法将返回文档中符合条件的所有tag

  • 过滤器

    • 过滤器可以被用在tag的name中,节点的属性中,字符串中或他们的混合中

    • 传入字符串

      • soup.find_all(‘b’)
    • 传入正则表达式

      • 找出所有以b开头的标签
      • soup.find_all(re.compile(r"^b"))
      • 找出所有名字中包含”t”的标签
      • soup.find_all(re.compile(r"t"))
    • 参考实例67_18

    • 传入列表参数,

    • Beautiful Soup会将与列表中任一元素匹配的内容返回.

    • 返回值也是一个列表

    • soup.find_all([“a”, “b”])

    • 传入True,True 可以匹配任何值,

    • 下面代码查找到所有的tag,但是不会返回字符串节点

    • oup.find_all(True)

    • 参考实例67_19

  • 方法

    • 没有合适的过滤器,可以定义一个方法
    • 方法只接受一个元素参数,如果这个方法返回 True
    • 表示当前元素匹配并且被找到,如果不是则反回 False
    • 参考实例67_20

5.3.2. find_all()的参数使用

  • find_all()的参数使用
  • find_all( name , attrs , recursive , string , **kwargs )
    • name 参数

    • 可以查找所有名字为 name 的tag,字符串对象会被自动忽略掉

    • keyword 参数

    • 如果一个指定名字的参数不是搜索内置的参数名,

    • 搜索时会把该参数当作指定名字tag的属性来搜索,如果包含一个名字为 id 的参数,

    • Beautiful Soup会搜索每个tag的”id”属性

    • 有些tag属性在搜索不能使用,比如HTML5中的 data-* 属性

    • 但是可以通过 find_all() 方法的 attrs 参数

    • 定义一个字典参数来搜索包含特殊属性的tag

    • 参考实例67_21

5.3.3. CSS搜索

  • 标识CSS类名的关键字 class 在Python中是保留字,

    • 使用 class 做参数会导致语法错误.从Beautiful Soup的4.1.1版本开始,
    • 可以通过 class_ 参数搜索有指定CSS类名的tag
  • class_ 参数

    • 同样接受不同类型的 过滤器 ,字符串,正则表达式,方法或 True
    • 参考实例67_22
  • string 参数

    • 搜文档中的字符串内容.与 name 参数的可选值一样
    • soup.find_all(string=“Elsie”)
    • 和tag标签混合使用
    • soup.find_all(“a”, string=“Elsie”)
  • 补充

  • find_all() 几乎是Beautiful Soup中最常用的搜索方法

  • 语法可以简写,以下写法等价

      soup.find_all("a")soup("a")soup.title.find_all(string=True)soup.title(string=True)
    

5.3.4. find()

  • find( name , attrs , recursive , string , **kwargs )

  • 比如文档中只有一个标签,那么使用 find_all() 方法

  • 来查找标签就不太合适,

  • 使用 find_all 方法并设置 limit=1 参数不如直接使用 find() 方法

  • 下面代码等价

      soup.find_all('title', limit=1)[<title>The Dormouse's story</title>]soup.find('title')<title>The Dormouse's story</title>- 唯一的区别是 find_all() 方法的返回结果是值包含一个元素的列表,- 而 find() 方法直接返回结果     
    
  • find_parents( name , attrs , recursive , string , **kwargs )

  • find_parent( name , attrs , recursive , string , **kwargs )

  • find_all() 和 find() 只搜索当前节点的所有子节点,孙子节点等.

  • find_parents() 和 find_parent() 用来搜索当前节点的父辈节点,

  • find_all_next() 和 find_next()

  • find_all_previous() 和 find_previous()

5.4. 修改文档树

  • 修改方法类似python中的赋值

  • 语法如下
    soup = BeautifulSoup(‘Extremely bold’)
    tag = soup.b

    tag.name = “blockquote”
    tag[‘class’] = ‘verybold’
    tag[‘id’] = 1
    tag

    Extremely bold

本章案例较多:
源代码请到GITHUB下载:
https://github.com/FangbaiZhang/TLXY_study_note/tree/master/Spider

下接:
Python3网络爬虫教程15——BeautifulSoup4中的编码,格式化,解析器的区别
https://blog.csdn.net/u011318077/article/details/86633466

这篇关于Python3网络爬虫教程14——BeautifulSoup4之搜索文档树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030737

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插