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

相关文章

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用