python基础:数据解析BeatuifulSoup,不需要考虑前端形式的一种获取元素的方法

1.beatuifulSoup 基本用法

beautifulSoup(简称bs4)是python的一个第三方库,用于解析html和xml文档中提取数据的python库。它能够将复杂的文档转化为树形结构,方便快速定位和提取所需数据以及查找和修改,常常与爬虫框架如requests结合使用:

一下是bs4的核心功能的介绍:

  • 四大对象类型
    tag:html、xml中的标签,如div和a标签
    NavigableString:标签内的文本内容
    BeautifulSoup:表示整个文档树
    Comment:Html中的注释部分
  • 解析器对比
解析器 优势 劣势
html 内置无需安装 速度比较慢,容错性一般
lxml 速度快容错性强 需要额外安装依赖
html5lib 遵循html5标准容错性最强 速度最慢,需要额外安装
  • 安装与导入
    命令:
python 复制代码
 pip install beautifulsoup4
复制代码
执行结果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/85154572e27b485b903f9965bea34c6a.png)

还需要安装解析器(如lxml或者html.parse)

命令:

python 复制代码
pip install lxml

导包使用

  • 使用BeautifulSoup流程
    ①导入BeautifulSoup模块
    ②创建BeautifulSoup对象
    ③使用标签名称查找元素
    ④使用css选择器查找元素
    ⑤获取元素的文本内容
  • BeautifulSoup基本用法
    ①初始化与解析
    a. 字符串解析
python 复制代码
from bs4 import BeautifulSoup

# 字符串解析,相当于把需要解析的内容,不需要放到html中,直接放在str中
html_doc = '''
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>python</title>
    </head>
    <body>
            <div class="name" id="title">
                <h1> python 学习</h1>
                <p> 爬虫 </p>
                <a href="https://www.python.org/"></a>
            </div>
    </body>
</html>
'''
# 设置解析器进行解析
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)
复制代码
	b. 文件解析(从html文件中进行解析)
python 复制代码
from bs4 import BeautifulSoup

# 文件解析
with open('bs.html', 'r', encoding='utf8') as f:
    soup = BeautifulSoup(f, 'html.parser')
    print(soup)
复制代码
	c. URL获取HTML并解析(使用爬虫脚本发送请求的时候就已经可以进行解析了)
python 复制代码
from bs4 import BeautifulSoup
import requests

# url获取html并解析
url = 'http://www.baidu.com'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 '
                  'Safari/537.39996'
}
response = requests.get(url= url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
print(soup)

②访问元素

例如:获取字符串中的某个标签,通过标签名来进行访问

python 复制代码
from bs4 import BeautifulSoup

# 字符串解析,相当于把需要解析的内容,不需要放到html中,直接放在str中
html_doc = '''
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>python</title>
    </head>
    <body>
            <div class="name" id="title">
                <h1> python 学习</h1>
                <p> 爬虫 </p>
                <a href="https://www.python.org/">路径</a>
            </div>
    </body>
</html>
'''
# 设置解析器进行解析
soup = BeautifulSoup(html_doc, 'html.parser')
# 1.直接访问子标签
h1_data = soup.h1
p_data = soup.p
div_data = soup.div
print(soup)
print(h1_data)
print(p_data)
print(div_data)
# 2.访问标签的标签名、标签值
# (先获取h1标签)
title = soup.h1
# 获取标签名
name= title.name
print(name)
# 获取标签值
str = title.string
print(str)
# 获取某个父标签下的某个子标签下的内容(嵌套访问:父亲找儿子的某个内容)
print(soup.body.div.a.string)

2. 高级查找方法

2.1 查找元素

2.2 提取文本和属性

2.3 find()和findAll()

2.4 CSS选择器(推荐使用)

3. 导航树操作(处理复杂结构)

4. 新浪往案例实战

5. jsonpath提取数据

相关推荐
wearegogog1238 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
molaifeng8 小时前
Go 语言如何实现高性能网络 I/O:Netpoller 模型揭秘
开发语言·网络·golang
Drawing stars8 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间8 小时前
Matlab学习记录33
开发语言·学习·matlab
品克缤8 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
Evand J8 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
小二·8 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°9 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
jllllyuz9 小时前
基于MATLAB的二维波场模拟程序(含PML边界条件)
开发语言·matlab
忆锦紫9 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab