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

相关推荐
卷无止境21 分钟前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
福兮说26 分钟前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
\光辉岁月/27 分钟前
5.java-数组
java·开发语言
Java后端的Ai之路28 分钟前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师29 分钟前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师34 分钟前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论
谢亮_vipxieliang43 分钟前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
Zootopia62644 分钟前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
Y3815326621 小时前
搜索 API 延迟优化:并发数、超时与超时的真实代价
python·搜索引擎
时间的拾荒人1 小时前
Qt 多线程详解:从 QThread 到实战
开发语言·qt·面试