• 14 bs对象.节点名称.name attrs string 获取节点名称 属性 内容


    14 bs对象.节点名称.name attrs string 获取节点名称 属性 内容

    14.1 提取节点名称 属性 内容的方法

    tag [tæɡ]:标签。
    attr:属性。
    string [strɪŋ]:字符串。

    在这里插入图片描述

    1. 获取节点名称

    语法格式:bs对象.节点名称.name
    返回的数据类型:字符串

    from bs4 import BeautifulSoup
    html_str = """<p align="center"><strong>应是绿肥红瘦。</strong></p>"""
    bs_duixiang = BeautifulSoup(html_str,"lxml")
    
    # 获取p节点的名称
    print(bs_duixiang.p.name)
    print(type(bs_duixiang.p.name))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    【终端输出】

    p
    <class 'str'>
    
    • 1
    • 2

    运行代码后输出的p为节点名称,数据类型为字符串。

    2. 获取节点属性

    语法格式:bs对象.节点名称.attrs
    返回的数据类型:字典

    from bs4 import BeautifulSoup
    html_str = """<p align="center"><strong>应是绿肥红瘦。</strong></p>"""
    bs_duixiang = BeautifulSoup(html_str,"lxml")
    
    # 获取p节点的属性
    print(bs_duixiang.p.attrs)
    print(type(bs_duixiang.p.attrs))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    【终端输出】

    {'align': 'center'}
    <class 'dict'>
    
    • 1
    • 2

    运行代码后输出的align': 'center为节点属性,数据类型为字典。

    align[əˈlaɪn]:对齐方式。
    center[ˈsentə]:居中。

    align表示代码属性名。
    center表示属性值。

    3. 获取节点内容

    语法格式:bs对象.节点名称.string
    返回的数据类型:可遍历的字符串对象。

    from bs4 import BeautifulSoup
    html_str = """<p align="center"><strong>应是绿肥红瘦。</strong></p>"""
    bs_duixiang = BeautifulSoup(html_str,"lxml")
    
    # 获取p节点的内容
    print(bs_duixiang.p.string)
    print(type(bs_duixiang.p.string))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    【终端输出】

    应是绿肥红瘦。
    <class 'bs4.element.NavigableString'>
    
    • 1
    • 2

    14.2 实战练习

    # 声明一个字符串变量,存储部分HTML代码
    html_str = """
    <div id="ArtContent">
    <h1>古典诗词鉴赏之李清照篇——《如梦令》</h1>
    </div>
    <p align="center"><strong>昨夜雨疏风骤,</strong></p>
    <p align="center"><strong>浓睡不消残酒,</strong></p>
    <p align="center"><strong>试问卷帘人,</strong></p>
    <p align="center"><strong>却道海棠依旧。</strong></p>
    <p align="center"><strong>知否,</strong></p>
    <p align="center"><strong>知否,</strong></p>
    <p align="center"><strong>应是绿肥红瘦。</strong></p>
    <a href="https://www.diyifanwen.com/m" target="_blank" class="print-link">
    """
    # 步骤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')
    
    # 步骤3:bs对象.tag名称获取tag对象
    print("提取到的节点数据类型为tag对象:")
    print("默认提取第一个p节点")
    print(bs_duixiang.p,'\n')
    
    # 步骤4:bs对象.节点名称.name提取节点标签名称
    print("p节点的名称为:")
    print(bs_duixiang.p.name,'\n')
    
    # 步骤4:bs对象.节点名称.attrs提取节点标签属性
    print("p节点的属性为:")
    print(bs_duixiang.p.attrs,'\n')
    
    # 步骤4:bs对象.节点名称.string提取节点标签内容
    print("p节点的内容为:")
    print(bs_duixiang.p.string,'\n')
    
    print("name的数据类型为:",type(bs_duixiang.p.name))
    print("attrs的数据类型为:",type(bs_duixiang.p.attrs))
    print("string的数据类型为:",type(bs_duixiang.p.string))
    
    
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    【终端输出】

    解析器解析后得到一个BeautifulSoup对象:
    <class 'bs4.BeautifulSoup'> 
    
    提取到的节点数据类型为tag对象:
    默认提取第一个p节点
    <p align="center"><strong>昨夜雨疏风骤,</strong></p> 
    
    p节点的名称为:
    p 
    
    p节点的属性为:
    {'align': 'center'} 
    
    p节点的内容为:
    昨夜雨疏风骤, 
    
    name的数据类型为: <class 'str'>
    attrs的数据类型为: <class 'dict'>
    string的数据类型为: <class 'bs4.element.NavigableString'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    14.3 总结

    在这里插入图片描述

  • 相关阅读:
    项链 (爱思创算法四)(期中测试)(答案记录)
    TAMRA-NHS 荧光素-活性酯
    MR场景直播-帮助企业高效开展更有意思的员工培训
    6.linux磁盘分区、挂载
    Vue+draggable实现拖拽表格字段进行分组
    访问一次网站的全过程
    什么是 Web 3.0 及其重要性
    获取请求IP以及IP解析成省份
    基于stm32F4的智能宠物喂食器的设计:LVGL界面、定时喂食喂水通风
    深度学习常见网络及报错大汇总:vgg训练 tensorflow版本匹配 模型保存与加载 loss特别大
  • 原文地址:https://blog.csdn.net/weixin_63986098/article/details/125453687