学习笔记:Beautiful Soup 类的基本元素

1. 学习视频地址

https://www.bilibili.com/video/BV1pt41137qK?p=22

2. Beautiful Soup 类的基本元素

BeautifulSoup 库:也叫BeautifulSoup4或bs4,是解析、遍历、维护,标签树的功能库
在这里插入图片描述

基本元素说明
Tag标签,最基本的信息组织单位,分别用<>和</>标明开头和结尾
Name标签的名字,

的名字是 p,格式:.name
Attributes标签的属性,字典形式组成,格式:.attrs
NavigableString标签内非属性字符串, <>…</>中字符串,格式:.string
Comment标签内字符串的注释部分,一种特殊的comment类型

2.1 代码

如下demo 演示 .name、.attrs 和 .string 的用法

import requests
# BeautifulSoup 库:也叫BeautifulSoup4或bs4,是解析、遍历、维护,标签树的功能库
# 我们从bs4库中引入了一个叫BeautifulSoup的类型
from bs4 import BeautifulSoup

"""
Beautiful Soup 类的基本元素
基本元素                  说明
Tag               标签,最基本的信息组织单位,分别用<>和</>标明开头和结尾
Name              标签的名字,<p>..</p>的名字是 p,格式:<tag>.name
Attributes        标签的属性,字典形式组成,格式:<tag>.attrs
NavigableString   标签内非属性字符串, <>...</>中字符串,格式:<tag>.string
Comment           标签内字符串的注释部分,一种特殊的comment类型
"""
if __name__ == '__main__':
    # html.parser 为解析器,专门解析 html
    soup = BeautifulSoup('<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>', 'html.parser')
    print('标签的名字:', soup.name)
    print('标签的属性:', soup.attrs)
    print('标签内非属性字符串:', soup.string)
    print('-----------------')
    print('a 标签的名字:',soup.a.name)
    print('a 标签的属性:',soup.a.attrs)
    print('a 标签内非属性字符串:', soup.a.string)
    print('-----------------')
    print('a 标签的属性中的字典-class的对应值:', soup.a.attrs['class'])
    print('a 标签的属性中的字典-href的对应值::', soup.a.attrs['href'])
    print('a 标签的属性中的字典-id的对应值::', soup.a.attrs['id'])

2.2 运行结果

C:\Users\珞落\AppData\Local\Programs\Python\Python39\python.exe D:/PythonProject/main.py
标签的名字: [document]
标签的属性: {}
标签内非属性字符串: Basic Python
-----------------
a 标签的名字: a
a 标签的属性: {'class': ['py1'], 'href': 'http://www.icourse163.org/course/BIT-268001', 'id': 'link1'}
a 标签内非属性字符串: Basic Python
-----------------
a 标签的属性中的字典-class的对应值: ['py1']
a 标签的属性中的字典-href的对应值:: http://www.icourse163.org/course/BIT-268001
a 标签的属性中的字典-id的对应值:: link1

Process finished with exit code 0

3. 代码

import requests
# BeautifulSoup 库:也叫BeautifulSoup4或bs4,是解析、遍历、维护,标签树的功能库
# 我们从bs4库中引入了一个叫BeautifulSoup的类型
from bs4 import BeautifulSoup

"""
Beautiful Soup 类的基本元素
基本元素                  说明
Tag               标签,最基本的信息组织单位,分别用<>和</>标明开头和结尾
Name              标签的名字,<p>..</p>的名字是 p,格式:<tag>,name
Attributes        标签的属性,字典形式组成,格式:<tag>.attrs
NavigableString   标签内非属性字符串, <>...</>中字符串,格式:<tag>.string
Comment           标签内字符串的注释部分,一种特殊的comment类型

例如 P 标签:<p class="title>xxx</p>",标签对TAG:<p>..</p>
"""
if __name__ == '__main__':
    # html.parser 为解析器,专门解析 html
    r = requests.get("https://python123.io/ws/demo.html")
    demo = r.text
    soup = BeautifulSoup(demo, 'html.parser')
    # 漂亮显示
    print(soup.prettify())
    print('------------------------------------')
    # 打印标签为head的信息 <head><title>This is a python demo page</title></head>
    print(soup.head)
    # 打印标签为title的信息 <title>This is a python demo page</title>
    print(soup.title)

    # 打印标签为a的信息 <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>
    # 这里有个问题,该网页有2个a标签,这里会返回第一个a标签,不会返回第二个a标签,那么怎么解决呢?
    print(soup.a)

    # 从观察中我们发现,2个a的父标签不一样
    tag = soup.a
    # 打印结果:<class 'bs4.element.Tag'>
    print(type(tag))
    # 打印结果:<class 'dict'>
    print(type(tag.attrs))
    # 打印出一个字典(键值对){'href': 'http://www.icourse163.org/course/BIT-268001', 'class': ['py1'], 'id': 'link1'}
    print(tag.attrs)
    # 获取字典中的class的键值,['py1']
    print(tag.attrs['class'])

4. 运行结果

C:\Users\珞落\AppData\Local\Programs\Python\Python39\python.exe D:/PythonProject/main.py
<html>
 <head>
  <title>
   This is a python demo page
  </title>
 </head>
 <body>
  <p class="title">
   <b>
    The demo python introduces several python courses.
   </b>
  </p>
  <p class="course">
   Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
   <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">
    Basic Python
   </a>
   and
   <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">
    Advanced Python
   </a>
   .
  </p>
 </body>
</html>
------------------------------------
<head><title>This is a python demo page</title></head>
<title>This is a python demo page</title>
<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>
<class 'bs4.element.Tag'>
<class 'dict'>
{'href': 'http://www.icourse163.org/course/BIT-268001', 'class': ['py1'], 'id': 'link1'}
['py1']

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值