• 13 `bs_duixiang.tag标签`得到一个tag对象


    13 bs_duixiang.tag标签得到一个tag对象

    13.1 BeautifulSoup类提取数据的方法

    选择器的作用:操作BeautifulSoup对象,查找、定位元素,并提取数据。

    在这里插入图片描述

    13.2 节点选择器

    1. 什么是节点

    <h1>一级标题</h1> 
    <h2>二级标题</h2>   
    <h3>三级标题</h3>   
    <p>我是一个段落</p>    
    
    • 1
    • 2
    • 3
    • 4

    上述代码是一段HTML代码。
    h表示标题标签。标题标签一共有6个,从h1到h6,数字越大,字号越小。
    p表示段落标签,用于给段落分段,在网页上独占一行。

    在HTML代码中的我把h p叫做HTML标签。
    在Python中,我们把h p叫做节点标签,即tag标签。
    【温馨提示】这样的表述更方便初学者理解节点,和很多官方的教材有出入,仅供参考。

    2. 提取节点

    语法格式:bs对象.tag名称
    tag指节点名称。
    返回值:节点对象。

    用html.parser解析器提取h2节点

    html_str = """
    <h2>霸王别姬</h2>
    <span>中国内地、中国香港</span>
    <span>171分钟</span>
    <h3>剧情简介</h3>
    <a href="https://maoyan.com/"></a>
    """
    # 步骤1:从bs4 库中导入BeautifulSoup类
    from bs4 import BeautifulSoup
    
    # 步骤2:传入参数,实例化BeautifulSoup类
    # 参数1是要解析的HTML字符串
    # 参数2是解析器(这里用html.parser解析器)
    # 实例化后得到一个BeautifulSoup对象
    # bs_duixiang = <class 'bs4.BeautifulSoup'>
    bs_duixiang  = BeautifulSoup(html_str, 'html.parser')
    print("解析器解析后得到一个BeautifulSoup对象:")
    print(type(bs_duixiang ),'\n')
    
    # bs对象.tag名称提取节点
    print("这里提取h2节点")
    print(bs_duixiang.h2,'\n')
    
    print("提取到的节点数据类型为tag对象:")
    print(type(bs_duixiang .h2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    【终端输出】

    解析器解析后得到一个BeautifulSoup对象:
    <class 'bs4.BeautifulSoup'> 
    
    这里提取h2节点
    <h2>霸王别姬</h2> 
    
    提取到的节点数据类型为tag对象:
    <class 'bs4.element.Tag'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行代码后,成功输出了h2节点。

    用lxml解析器提取span节点

    html_str = """
    <h2>霸王别姬</h2>
    <span>中国内地、中国香港</span>
    <span>171分钟</span>
    <h3>剧情简介</h3>
    <a href="https://maoyan.com/"></a>
    """
    # 步骤1:从bs4 库中导入BeautifulSoup类
    from bs4 import BeautifulSoup
    
    # 步骤2:传入参数,实例化BeautifulSoup类
    # 参数1是要解析的HTML字符串
    # 参数2是解析器(这里用lxml解析器)
    # 实例化后得到一个BeautifulSoup对象
    # bs_duixiang = <class 'bs4.BeautifulSoup'>
    bs_duixiang  = BeautifulSoup(html_str, 'lxml')
    print("解析器解析后得到一个BeautifulSoup对象:")
    print(type(bs_duixiang ),'\n')
    
    # bs对象.tag名称提取节点
    print("这里提取span节点")
    print(bs_duixiang.span,'\n')
    
    print("提取到的节点数据类型为tag对象:")
    print(type(bs_duixiang .span))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    【终端输出】

    解析器解析后得到一个BeautifulSoup对象:
    <class 'bs4.BeautifulSoup'> 
    
    这里提取span节点
    <span>中国内地、中国香港</span> 
    
    提取到的节点数据类型为tag对象:
    <class 'bs4.element.Tag'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    上述html_str字符中有2个标签。
    代码运行成功后,我们提取到了中国内地、中国香港标签。
    即2个标签中的第1个。
    那是因为当html代码中存在多个相同的节点,节点选择器只会提取第1个节点。

    13.3 总结

    在这里插入图片描述

  • 相关阅读:
    通过RedisTemplate简单实现延时队列
    微服务项目:尚融宝(44)(核心业务流程:借款申请(1))
    springboot参数校验的三种方式
    4K高清视频素材,拿去不谢。
    HCIP---企业网的三层架构
    一文学会Spring Boot配置属性
    Llama改进之——分组查询注意力
    微信视频号的项目玩法,视频号好物分享,只要你会剪辑,就可以去操作
    菊风入选2022·爱分析保险科技厂商报告,为保险行业数智化转型赋能
    分层注入的设计模式-上下层文件相互包含解决办法
  • 原文地址:https://blog.csdn.net/weixin_63986098/article/details/125436526