当前位置: 首页 > java >正文

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标准容错性最强速度最慢,需要额外安装
  • 安装与导入
    命令:
 pip install beautifulsoup4
执行结果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/85154572e27b485b903f9965bea34c6a.png)

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

pip install lxml

导包使用

  • 使用BeautifulSoup流程
    ①导入BeautifulSoup模块
    ②创建BeautifulSoup对象
    ③使用标签名称查找元素
    ④使用css选择器查找元素
    ⑤获取元素的文本内容
  • BeautifulSoup基本用法
    ①初始化与解析
    a. 字符串解析
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文件中进行解析)
from bs4 import BeautifulSoup# 文件解析
with open('bs.html', 'r', encoding='utf8') as f:soup = BeautifulSoup(f, 'html.parser')print(soup)
	c. URL获取HTML并解析(使用爬虫脚本发送请求的时候就已经可以进行解析了)
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)

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

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提取数据

http://www.xdnf.cn/news/17112.html

相关文章:

  • 量子计算接口开发:Python vs Rust 性能对决
  • 我用一个 Postgres 实现一整套后端架构!
  • 分布式版本控制工具Git
  • javacc学习笔记 01、JavaCC本地安装与测试
  • HCIP笔记1
  • Mac中M系列芯片采用rbenv管理ruby版本
  • pytorch 学习笔记3-利用框架内网络训练糖尿病数据集
  • 深入剖析通用目标跟踪:一项综述
  • 抽像代数概念理解——陪集(coset)
  • 0.08B参数以小博大:用小模型生成媲美GPT-4o的古典诗词
  • 嵌入式学习之51单片机——串口(UART)
  • Webpack 搭建 Vue3 脚手架详细步骤
  • Unix 命令行shell基础--学习系列003
  • 跳板机实现 SSHFS 挂载
  • Tomcat虚拟主机配置详解和多实例部署
  • C + +
  • 交叉验证:原理、作用与在机器学习流程中的位置
  • SpringBoot3.x入门到精通系列:3.2 整合 RabbitMQ 详解
  • Ubuntu系统VScode实现opencv(c++)图像一维直方图
  • Ubuntu系统VScode实现opencv(c++)图像二维直方图
  • 补:《每日AI-人工智能-编程日报》--2025年7月28日
  • 软件设计 VS 软件需求:了解成功软件开发外包的关键差异
  • git操作命令和golang编译脚本
  • 补:《每日AI-人工智能-编程日报》--2025年7月27日
  • 移动端 WebView 视频无法播放怎么办 媒体控件错误排查与修复指南
  • 高精度实战:YOLOv11交叉口目标行为全透视——轨迹追踪×热力图×滞留分析(附完整代码)
  • Linux-Day01.初识Linux和基础指令
  • 基于FAISS和Ollama的法律智能对话系统开发实录-【大模型应用班-第5课 RAG技术与应用学习笔记】
  • Ubuntu 下编译 SQLCipher 4.8.0
  • CMake进阶: 使用FetchContent方法基于gTest的C++单元测试