【Python爬虫】详解BeautifulSoup()及其方法
文章目录
- 🍔准备工作
- 🌹BeautifulSoup()
- ⭐代码实现
- ✨打印标签里面的内容
- ✨快速拿到一个标签里的属性
- ✨打印整个文档
- 🎆获取特定标签的特定内容
- 🌹查找标签
- 🎈在文档查找标签 find_all
- 🎈正则表达式搜索
- 🌹查找参数
- 🌹文本(text)参数
- 🌹limit参数
- 🛸通过标签来查找 select
- 🛸通过类名来查找
- 🛸通过id来查找
🍔准备工作
我们运行下面的代码,爬取一下百度网站
import urllib.requesturl = "https://www.baidu.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=headers)
reponse = urllib.request.urlopen(req)
print(reponse.read().decode("utf-8"))
创建一个file,后缀为html,把爬取的代码粘贴过去

🌹BeautifulSoup()
BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库。它提供了一种简单而灵活的方式,帮助开发者从网页中提取所需的数据
使用 BeautifulSoup,你可以将 HTML 或 XML 文档加载到解析树中,并使用类似于 DOM(文档对象模型)的方式来遍历和搜索文档的结构。然后,你可以使用各种方法和属性来定位、提取和操作文档中的元素和数据。
以下是 BeautifulSoup 的一些常见用途:
- 解析和提取数据:通过加载 HTML 或 XML 文档,BeautifulSoup 可以帮助你轻松地提取出所需的数据。你可以使用 CSS 选择器或类似于字典的属性访问方式来定位元素,并获取其文本内容、属性值等。
- 数据清洗和转换:BeautifulSoup 提供了诸多方法来处理解析树中的元素和数据。你可以删除、替换或修改特定的标签、属性,也可以对文本内容进行处理,如去除空白字符、标准化格式等。
- 网页爬虫:在网络爬虫中,你可以使用 BeautifulSoup 来解析抓取到的网页内容,提取出需要的数据,如标题、链接、图像等。它可以帮助你处理网页中的复杂结构,并提供便捷的 API 进行数据提取和处理。
- 数据可视化和分析:BeautifulSoup 可以与其他数据处理和可视化库(如 Pandas、Matplotlib)结合使用,进一步分析和展示提取到的数据。你可以将数据转换为数据框架、绘制图表或进行其他分析操作。
总的来说,BeautifulSoup 是一个功能强大且易于使用的工具,用于解析和处理 HTML、XML 等文档,并从中提取所需的数据。它在数据爬取、数据清洗和转换等领域都有广泛的应用。
⭐代码实现
from bs4 import BeautifulSoupfile = open("./baidu.html","rb")
html=file.read()# 解析的是html文件
# 解析器是html.parser
bs=BeautifulSoup(html,"html.parser")print(bs.title)
运行后发现

运行结果提取出了title
同理


✨打印标签里面的内容
print(bs.title.string)

✨快速拿到一个标签里的属性
print(bs.a.attrs)

✨打印整个文档
print(bs)

🎆获取特定标签的特定内容
print(bs.head.contents[1])

🌹查找标签
🎈在文档查找标签 find_all
查找标签
搜索到的仅仅是那一种标签
t_list=bs.find_all("span")

把所有的 某个标签 放到列表里面
🎈正则表达式搜索
需要引入库
import re
搜索出来的是包含 某个标签 的

我们查找a标签,head标签里面有a这个 字母,所以被选出来了
由于link标签里面的链接中有a字母,所以link标签也被选出来了
🌹查找参数
比如下面这种

🌹文本(text)参数

🌹limit参数
限制获取到的个数

🛸通过标签来查找 select

🛸通过类名来查找

🛸通过id来查找


相关文章:
【Python爬虫】详解BeautifulSoup()及其方法
文章目录 🍔准备工作🌹BeautifulSoup()⭐代码实现✨打印标签里面的内容✨快速拿到一个标签里的属性✨打印整个文档🎆获取特定标签的特定内容 🌹查找标签🎈在文档查找标签 find_all🎈正则表达式搜索 &#x…...
C语言经典算法-8
文章目录 其他经典例题跳转链接41.基数排序法42.循序搜寻法(使用卫兵)43.二分搜寻法(搜寻原则的代表)44.插补搜寻法45.费氏搜寻法 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠…...
Panasonic松下PLC如何数据采集?如何实现快速接入IIOT云平台?
在工业自动化领域,数据采集与远程控制是提升生产效率、优化资源配置的关键环节。对于使用Panasonic松下PLC的用户来说,如何实现高效、稳定的数据采集,并快速接入IIOT云平台,是摆在他们面前的重要课题。HiWoo Box工业物联网关以其强…...
高性能 MySQL 第四版(GPT 重译)(四)
第十一章:扩展 MySQL 在个人项目中运行 MySQL,甚至在年轻公司中运行 MySQL,与在市��已经建立并且“呈现指数增长”业务中运行 MySQL 大不相同。在高速业务环境中,流量可能每年增长数倍,环境变得…...
整型数组按个位值排序 - 华为OD统一考试(C卷)
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素…...
【React】Diff算法
1. React15 Diff算法(递归进行) 一句话概括:新虚拟DOM和旧虚拟DOM对比,找出差异,根据差异更新真实DOM Diff过程描述: 1. 树比较(DOM) 同层节点之间相互比较,不会跨层级比较。(当发现…...
【物联网】Modbus 协议及应用
Modbus 协议简介 QingHub设计器在设计物联网数据采集时不可避免的需要针对Modbus协议的设备做相关数据采集,这里就我们的实际项目经验分享Modbus协议 简介 Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太…...
Docker容器引擎
1、Docker是什么。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的"虚拟机"。Docker的logo设计为蓝色鲸鱼,拖着许多集装箱。鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应…...
2.28线程
注意被抢占时是返回原队列,优先级不变。越往下优先级越小。往下没有优先级时,在最低的优先级队列里循环 到达了不一定会被服务,会进入就绪态进行等待 。核心等式就是周转时间运行时间等待时间,带权就是周转/运行, 随着…...
TCP/IP ⽹络模型
TCP/IP ⽹络模型 对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备&am…...
云原生:重塑未来应用的基石
随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ Ǵ…...
蓝桥杯day4刷题日记
P8605 [蓝桥杯 2013 国 AC] 网络寻路 思路来源于https://www.luogu.com.cn/article/iat8irsf #include <iostream> using namespace std; int n,m; int q[10010]; int v[100010],u[100010]; long long res;int main() {cin>>n>>m;for(int i0;i<m;i){cin…...
[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)
目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中,现在有很多通过电机去做相机的聚焦调节,对比手工调节,自动调节效果更好,而且其也能满足设备自动的需求,尤…...
常州IGM机器人RTE497的日常维修保养方法
一、IGM机器人RTE497日常检查 每日工作前,进行以下检查: 外观检查:确认IGM机器人RTE497本体无明显损伤,各部件连接稳固。 电缆检查:检查所有电缆、气管等是否完好,无磨损、无挤压。 润滑检查:确…...
如何利用机器学习和Python编写预测模型来预测设备故障
预测设备故障是机器学习和数据科学的一个常见问题,通常可以通过以下几个步骤来解决: 1. 数据收集 首先,需要收集与设备运行相关的数据,包括: 设备的历史数据环境数据(如温度、湿度等)使用时间…...
mysql部署(2)主从复制
在前面的基础上,现有26、41两个mysql8的实例,下面以26为主41为从搭建主从复制: 机器主从端口号root密码主从复制账号密码xxx.xx.xxx.26主3306Mysql#26user1/user1#26xxx.xx.xxx.41从3306Mysql#41 一、master主库配置 1、修改mysql配置文件…...
FX-数组的使用
1一维数组 1.1一维数组的创建和初始化 1.1.1数组的创建 //代码1 int arr1[10]; char arr2[10]; float arr3[1]; double arr4[20]; //代码2 //用宏定义的方式 #define X 3 int arr5[X]; //代码3 //错误使用 int count 10; int arr6[count];//数组时候可以正常创建࿱…...
springboot283图书商城管理系统
图书商城管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本图书商城管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理…...
FFmpeg-- c++实现:音频流aac和视频流h264封装
文章目录 流程api核心代码muxer.hmuxer.cpp aac 和 h264 封装为视频流,封装为c的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流,赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int Se…...
单片机烧录方式,JTAG,ISP,SWD,
常见的词汇 参考 ISP:In System Programing,在系统编程 IAP:In Application Programing,在应用编程 ICP:In Circuit Programing,在电路编程 ICSP全称是In Circuit Serial Programming JTAG(Joint Test Act…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
