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.pswp.cn/pingmian/92229.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92229.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92229.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu共享文件夹权限设置

在Ubuntu中设置共享文件夹的权限&#xff08;只读、读写、无权限&#xff09;&#xff0c;主要通过两种方式实现&#xff1a;‌文件系统权限‌和‌Samba共享配置‌。以下是详细步骤&#xff1a;‌一、文件系统权限设置&#xff08;基础权限&#xff09;‌1. ‌修改文件夹所有权…

小程序点击菜单栏实现样式动态切换

小程序点击菜单栏背景样式动态切换 前言&#xff1a;今天做一个小程序项目&#xff0c;要做一个菜单栏动态切换的功能&#xff0c;因为这种需求很常见&#xff0c;这次干脆记录一下&#xff0c;帮助别人的同时&#xff0c;自己下次也可以直接照搬使用。 效果截图如下&#xff1…

掌握工程化固件烧录,开启你的技术进阶之路-FPGA ISE(xilinx)

1、电脑需先行安装ISE14.7。若已完成安装&#xff0c;此步骤可略过&#xff1b;若尚未安装&#xff0c;在后续章节会介绍如何安装ISE&#xff0c;由于ISE14.7的安装程序体量庞大&#xff0c;可借助U盘进行传输。同时&#xff0c;电脑需预留至少30G的存储空间以用于安装该程序。…

Android 之 面试八股文

​1.Activity生命周期​​​​问题​​&#xff1a;描述Activity从启动到销毁的完整生命周期方法&#xff0c;并说明onSaveInstanceState()的调用时机。​​参考答案​​&#xff1a;onCreate()→ onStart()→ onResume()&#xff08;活跃状态&#xff09; → onPause()&#x…

暴力解决MySQL连接失败

本文涉及清空root密码完全重置MySQL权限彻底卸载并重装MySQL请务必在测试/本地环境操作&#xff0c;生产环境慎用&#xff01;场景Spring Boot项目连接MySQL一直报Access denied for user rootlocalhost&#xff0c;改密码、换驱动都没用&#xff1f;步骤1&#xff1a;完全重置…

前端开发:CSS(1)—— 什么是CSS?

本文用于记录前端开发的学习过程。前面我们已经学习了html的编写&#xff0c;知道了Web开发的一些最基本的知识&#xff1b;在html的学习过程中&#xff0c;我们提到关于样式的设计和修改常需要使用CSS来实现。那么CSS到底是什么东西呢&#xff1f;它又如何来设计样式呢&#x…

数据结构(4)—栈和队列

一、概念1.栈只允许在栈顶位置入栈和出栈元素&#xff0c;链表可以在任意位置插入和删除元素&#xff0c;栈和队列只允许在指定位置插入和删除元素2.链表、栈和队列都是一种线性结构&#xff08;一对一&#xff09;&#xff0c;栈和队列是一种特殊的表状结构二、栈1.基础概念先…

vue2.如何给一个页面设置动态的name。不同路由使用一样的组件。页面不刷新怎么办?

page里面detail.vue export default { name: detail, } vue2里面.vue的页面都会设置一个name&#xff0c;这个通常是写死的。不能在页面动态设置的。页面刷新缓存通常都是根据这个name来判断的。如果name写死。我几个页面都通用这一个页面的话&#xff0c;他也不刷新页面啊。 比…

浮动IP(Floating IP)的删除通常需要满足什么条件

浮动IP&#xff08;Floating IP&#xff09;的删除通常需要满足什么条件在云计算或网络环境中&#xff0c;浮动IP&#xff08;Floating IP&#xff09;的删除通常需要满足一定的条件&#xff0c;以确保操作不会影响现有业务或导致网络中断。以下是常见的可删除浮动IP的场景和条…

机器学习之随机森林(Random Forest)实战案例

一、算法基础 首先&#xff0c;来介绍一下算法的基础语法 class sklearn.ensemble.RandomForestClassifier(\ n_estimators’warn’,\ criterion’gini’,\max_depthNone, \ min_samples_split2,\ min_samples_leaf1, \ min_weight_fraction_leaf0.0, \ max_features’auto’…

《C语言》指针练习题--1

《C语言》指针练习题–1 1. 交换两个整数的值 题目描述&#xff1a; 编写一个C程序&#xff0c;定义一个函数swap&#xff0c;使用指针参数交换两个整数的值。在main函数中调用该函数并输出交换后的结果。 解题思路&#xff1a; 为了交换两个整数的值&#xff0c;可以通过指针传…

应急响应整理

目录 windows下 1. 检查账号安全 利用注册表实现用户隐藏 粘滞键后门 2 检查异常端口、进程 3. 检查启动项、计划任务、服务 4. 日志分析-Windows 常见事件类型、登录类型 Linux下 1. 账号安全 2. 历史命令 3. 检查异常端口 4. 检查异常进程 5. 检查开机启动项 …

一文读懂 C# 中的 Bitmap

一文读懂 C# 中的 Bitmap 一、Bitmap 到底是什么? 二、推荐使用场景 三、实战 Demo 基础用法:加载、创建和保存 进阶用法 缩放图片 裁剪图片 颜色调整(反色处理) 四、核心方法和属性说明 常用函数 常用属性 五、避坑指南、注意事项 六、总结与决策 一文读懂 C# 中的 Bitmap…

预约时间组件

效果图如何使用<template><view><button click"pickerTime(0)">预约时间0</button><button click"pickerTime(1)">预约时间1</button><button click"pickerTime(2)">预约时间2</button><but…

Android 开发 - Service、Camera、Layout Design 自定义设备类型和大小

一、Service 启动 1、基本介绍 &#xff08;1&#xff09;startService()其他组件通过调用 startService() 启动 Service 后&#xff0c;Service 可在后台无限期运行&#xff0c;即使启动 Service 的组件被销毁也不受影响&#xff0c;一般情况下 startService() 是执行单一操作…

Qwen Image:开源中文渲染SOTA,重塑文生图技术边界

1. Qwen Image的技术定位与行业痛点1.1 文本渲染&#xff1a;文生图领域的长期技术瓶颈传统文生图模型在图像美学与真实感优化上已取得显著进展&#xff0c;但多语言文本渲染始终是行业难以突破的瓶颈。主流模型在处理中文等非字母语言时&#xff0c;常出现字符断裂、布局错位、…

Docker入门教程:在腾讯云轻量服务器上部署你的第一个容器化应用 (2025)

更多云服务器知识&#xff0c;尽在hostol.com“在我电脑上明明是好的啊&#xff01;”这句话&#xff0c;是不是堪称程序员“甩锅”排行榜第一名的金句&#xff1f;当你辛辛苦苦开发完一个应用&#xff0c;把它交给同事或者部署到服务器上时&#xff0c;却发现因为它依赖的某个…

DevOps平台结合Gradle实现打包流水线

在现代软件开发中,持续集成与持续交付(CI/CD)已成为团队提速、降本增效的核心实践。Gradle作为强大的自动化构建工具,常被用于Android与Java项目的构建打包任务。而将Gradle集成进企业的DevOps平台中,不仅可以标准化构建过程,还能自动化打包、测试、发布的全流程,大幅提…

Node.js 操作 MySQL

目录 一、什么是 MySQL&#xff1f; 二、MySQL 的功能概览 三、MySQL 的安装与启动 安装 MySQL 启动服务 四、Node.js 如何连接 MySQL&#xff1f; 使用 mysql2 模块&#xff08;推荐&#xff09; 建立连接 五、创建数据表和插入数据&#xff08;SQL 初始化&#xff09…

解锁高效敏捷:2025年Scrum项目管理工具的核心应用解析

一、为什么Scrum团队需要专业项目管理工具&#xff1f;在敏捷开发实践中&#xff0c;Scrum框架虽然提供了基础的工作流程&#xff0c;但缺乏对任务细粒度管理的支持。传统白板或简单看板工具往往无法满足现代敏捷团队的需求&#xff0c;导致&#xff1a;冲刺规划混乱&#xff1…