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

Python爬虫---解析---BeautifulSoup

BeautifulSoup简称:bs4

作用:解析和提取数据

1. 安装:pip install bs4  或pip install bs4 -i https://pypi.douban.com/simple(使用国内镜像下载)

注意:需要安装在python解释器相同的位置,例如:D:\Program Files\Python3.11.4\Scripts

2. 导入: from bs4 import BeautifulSoup

3. 创建对象:

        1)服务器响应的文件生成对象:

        soup = Bequtifulsoup(response.read().decode(),'lxml')

        2)本地文件生成对象 soup = BeautifulSoup(open('1.html'),'lxml')

        注意:默认打开文件的编码格式gbk所以需要指定打开编码格式

4.使用:

4.1. bs4的一些函数:  1) find   2) findall    3) select

        1) find:获取第一个符合条件的数据

        2) findall:返回的是一个列表,且返回所有符合条件的标签,如果获取多个标签的数据,需要放在列表中

        3) select:返回的是一个列表,并且会返回多个数据

4.2.  例子:

from bs4 import BeautifulSoup# 通过解析本地文件
soup = BeautifulSoup(open("1224-解析-BeautifulSoup.html", encoding="utf-8"), "lxml")
# print(soup)# 根据标签名查找节点
print(soup.a)  # 获取第一个符合条件的数据的 a标签
print(soup.a.attrs)  # 获取第一个a标签的属性和属性值# bs4的一些函数:  1) find   2) findall    3) select# 1) find:获取第一个符合条件的数据
print(soup.find("a"))  # 获取第一个a标签
print(soup.find("a", title="a2"))  # 根据title值来找到对应的标签对象
print(soup.find("a", class_="a1"))  # 根据class值找到对应标签对象,注意class需要添加下划线# 2) findall:返回的是一个列表,且返回所有符合条件的标签,如果获取多个标签的数据,需要放在列表中
print(soup.find_all("a"))  # 返回所有符合条件的a标签
print(soup.find_all(["a", "span"]))  # 多个需要放在列表中
print(soup.find_all("li", limit=2))  # limit:查找前几个数据# 3) select:返回的是一个列表,并且会返回多个数据
print(soup.select("a"))
print(soup.select(".a1"))  # 可以通过.代表class
print(soup.select("#l1"))  # 可以通过#代表id
# 属性选择器------通过属性查找对应的标签
print(soup.select("li[id]"))  # 查找到li标签中有id的标签
print(soup.select("li[id='l2']"))  # 查找li标签中id为l2的标签
# 层级选择器
print(soup.select("div li"))  # 后代选择器  div下面的li
print(soup.select("div>ul>li"))  # 子代选择器
print(soup.select("a,li"))   # 找到a标签和li标签的所有的对象# 节点信息:
# 1)获取节点内容
obj = soup.select("#d1")[0]
# 如果标签对象中,只有内容,那么string和get_text()都可以用
# 如果标签对象中,除了内容还有标签,那么string就获取不到数据,而get_text()可以获取到数据
print(obj.string)    # None
print(obj.get_text())   # 我是第二个span
# 2)节点的属性
obj1 = soup.select("#p1")[0]
print(obj1.name)  # name:标签的名字     p
print(obj.attrs)  # 将属性值作为一个字典返回       {'id': 'd1'}# 3)获取节点的属性
obj2 = soup.select("#p1")[0]
print(obj2.attrs.get("class"))   # ['p1']
print(obj2.get("class"))   # ['p1']
print(obj2["class"])   # ['p1']

html:

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><div><ul><li id="l1">张三</li><li id="l2">李四</li><li>王五</li><a href="" id="" class="a1">BeautifulSoup</a><span>我是span</span></ul></div><a href="" title="a2">百度</a><div id="d1"><span>我是第二个span</span></div><p id="p1" class="p1">我是p标签</p>
</body>
</html>

相关文章:

Python爬虫---解析---BeautifulSoup

BeautifulSoup简称&#xff1a;bs4 作用&#xff1a;解析和提取数据 1. 安装&#xff1a;pip install bs4 或pip install bs4 -i https://pypi.douban.com/simple&#xff08;使用国内镜像下载&#xff09; 注意&#xff1a;需要安装在python解释器相同的位置,例如&#xf…...

Argument list too long when copying files

for i in /path/to/dir/*; do cp "$i" /path/to/other/dir/; done...

configure

configure 配置软件./configure --prefix$PWD/output CCaarch64-linux-gcc --hostaarch64-linux --enable-shared --enable-staticconfig.sub 文件 这个文件用于确定主机系统的类型&#xff0c;并返回与该系统相关的标识符。它包含一系列 shell 函数&#xff0c;用于检测主机…...

HOJ 项目部署-前端定制 默认勾选显示标签、 在线编辑器主题和字号大小修改、增加一言功能 题目AC后礼花绽放

# 项目拉取地址&#xff1a; https://gitee.com/himitzh0730/hoj.git # 切换到hoj-vue目录执行以下命令 #安装依赖 npm install #运行服务 npm run serve #修改代码后构建项目到dist文件夹&#xff0c;到服务器docker-compose.yml中修改hoj-frontend文件映射即可 npm run build…...

Scikit-Learn线性回归(二)

Scikit-Learn线性回归二:多项式回归 1、多项式回归2、多项式回归的原理3、Scikit-Learn多项式回归3.1、Scikit-Learn多项式回归API1、多项式回归 线性回归研究的是一个自变量与一个因变量之间的回归问题。在实际应用中,并不是所有的情景都符合线性关系,大多数情况都是非线性…...

07 Vue3框架简介

文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定&#xff08;v-model&#xff09;3. 条件控制&#xff08;v-if&#xff09;4. 数组遍历&#xff08;v-for&#xff09;5. 绑定事件…...

前端八股文(js篇)

一.强制类型转换规则 首先需要了解隐式转换所调用的函数。 当程序员显示调用Boolean&#xff08;value&#xff09;,Number&#xff08;value&#xff09;&#xff0c;String&#xff08;value&#xff09;完成的类型转换&#xff0c;叫做显示类型转换。 当通过new Boolean&…...

windows+ubuntu离线安装翻译软件有道词典

背景&#xff1a; 某些情况下&#xff0c;需要在无法连接互联网的电脑上翻译单词&#xff0c;句子以及段落&#xff0c;就需要能离线安装和翻译的翻译软件&#xff0c;具备一定的词库量&#xff0c;目前找到了《有道词典》。 windows 亲测&#xff0c;无法联网的win10中安装…...

DevC++ easyx实现视口编辑,在超过屏幕大小的地图上画点,与解决刮刮乐bug效果中理解C语言指针的意义

继上篇文案&#xff0c; DevC easyx实现地图拖动&#xff0c;超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动&#xff0c;但是当时野心不止&#xff0c;就想着一气能搓啥就继续搓啥&#xff0c;看着地图移动都搓…...

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…...

时间与时间戳转换及android和ios对时间识别的区别

注意&#xff1a; "2021-05-01 12:53:59.55" 时间对象在 ios 中会出现 NaN-NaN1-NaN 需要将对象格式化为&#xff1a;"2021/05/01 12:53:59.55" 可同时兼容 android 和 ios。 //将某时间转时间戳 /* var time new Date("2021-05-01 12:53:59.55&qu…...

飞天使-k8s知识点7-kubernetes升级

文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…...

【Unity游戏制作】游戏模型导入之前需要注意的三个基本点

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

三列布局 css

实现如下图的三列布局&#xff1a; .box {width:1400px;margin:0 auto;padding-bottom:40px;> .left {float:left;width:180px;margin-top:100px;text-align:center;}> .center {float:left;margin-top:100px;margin-left:130px;item-box {float:left;text-align:left;…...

Android开发之生命周期(App、Activity)

在Android开发中&#xff0c;应用程序&#xff08;App&#xff09;和活动&#xff08;Activity&#xff09;的生命周期是非常重要的概念。它们各自都有一系列的生命周期方法&#xff0c;这些方法会在特定的时刻被系统自动调用&#xff0c;以便于开发者对应用或活动进行相应的操…...

利用html2Canvas将表格下载为html

给到我的需求是点击按钮时请求后端接口&#xff0c;根据后端返回的数据&#xff0c;生成表格,并将表格的内容直接下载为html,如下图。 平常做的下载都是后端返回二进制流&#xff0c;这次前端做下载那就必须把页面先画出来&#xff0c;因为下载下来的表格在页面上是不显示的&a…...

《Git快速入门》Git分支

1.master、origin、origin/master 区别 首先搞懂git分支的一些名称区别&#xff1a; master &#xff1a; Git 的默认分支名字。它并不是一个特殊分支、跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支&#xff0c;是因为 git init 命令默认创建它&#xff0c…...

HarmonyOS应用性能与功耗云测试

性能测试 性能测试主要验证HarmonyOS应用在华为真机设备上运行的性能问题&#xff0c;包括启动时长、界面显示、CPU占用和内存占用。具体性能测试项的详细说明请参考性能测试标准。 性能测试支持Phone和TV设备&#xff0c;包格式包括Hap/App。 前提条件 已注册华为开发者帐号&a…...

【AI】人工智能本地环境集成安装

目录 1、基础安装 1.1 GPU安装 1.1.1 GPU版本支持 1.1.2 下载CUDA 1.1.3安装CUDA 1.1.4配置环境变量 1.1.5检测CUDA是否安装成功 1.2 CUDNN安装 1.2.1 下载CUDNN 1.2.2 添加配置 1.2.3验证结果 2、pytorch安装...

主流级显卡的新选择,Sparkle(撼与科技)Intel Arc A750兽人体验分享

▼前言 对于玩家而言&#xff0c;英特尔独显的出现不仅打破了NVIDIA与AMD双雄天下的局面&#xff0c;而且旗下的Arc A系列显卡还拥有不俗的做工性能以及颇具优势的价格&#xff0c;无论是升级或者是装新机都非常合适。如果要在Arc A系列当中选一个性能不俗&#xff0c;能够满足…...

乡村景区智慧垂钓破局增收!巨有科技激活乡村“渔乐”经济

垂钓作为国民级休闲活动&#xff0c;拥有超1.2亿爱好者&#xff0c;是乡村文旅中极具潜力的黄金业态。然而&#xff0c;多数乡村钓场仍停留在“一根竿、一个塘”的粗放运营阶段&#xff0c;面临计费混乱、管理成本高、体验同质化、增收乏力等困境。巨有科技聚焦乡村场景&#x…...

Input Overlay:免费开源直播输入显示插件终极指南

Input Overlay&#xff1a;免费开源直播输入显示插件终极指南 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在游戏直播、教学演示或技术分享中&#xff0c;观众最常问…...

索尼IMX811如何重塑工业视觉与专业影像的边界

突破像素极限&#xff0c;定义成像新高度在影像技术飞速发展的今天&#xff0c;高分辨率始终是专业领域不懈追求的目标。索尼半导体解决方案公司重磅推出的IMX811中画幅CMOS图像传感器&#xff0c;以2.47亿有效像素的惊人规格&#xff0c;为行业带来了颠覆性的突破。这款传感器…...

QMCDecode终极指南:5分钟快速掌握QQ音乐加密格式转换技巧

QMCDecode终极指南&#xff1a;5分钟快速掌握QQ音乐加密格式转换技巧 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默…...

空洞骑士模组管理器Scarab:5分钟学会一键安装所有模组

空洞骑士模组管理器Scarab&#xff1a;5分钟学会一键安装所有模组 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为《空洞骑士》模组安装的复杂流程而烦恼吗&#xff1…...

构图不是靠感觉!用Fitts定律+格式塔原理验证的Midjourney 6大构图公式(附Python自动构图评分脚本)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;构图不是靠感觉&#xff01;用Fitts定律格式塔原理验证的Midjourney 6大构图公式&#xff08;附Python自动构图评分脚本&#xff09; 构图绝非主观直觉&#xff0c;而是可量化、可验证的视觉认知工程。我们基于…...

React动画革命:react-tween-state 完全指南 - 10分钟掌握React平滑过渡动画

React动画革命&#xff1a;react-tween-state 完全指南 - 10分钟掌握React平滑过渡动画 【免费下载链接】react-tween-state React animation. 项目地址: https://gitcode.com/gh_mirrors/re/react-tween-state react-tween-state 是一款轻量级的 React 动画库&#xff…...

Mythos骨架式推理:企业级AI能力治理与因果建模新范式

1. 项目概述&#xff1a;一次被刻意“锁住”的能力跃迁如果你最近关注大模型前沿动态&#xff0c;大概率已经看到“Anthropic Mythos”这个词在技术圈悄然升温。它不是某个新发布的开源模型&#xff0c;也不是某家创业公司的秘密武器&#xff0c;而是Anthropic内部代号为Mythos…...

手写NumPy版RBM:从能量函数到吉布斯采样的可调试实现

1. 项目概述&#xff1a;这不是又一个“RBM扫盲帖”&#xff0c;而是一次亲手拆解神经网络祖师爷级模型的实操复盘Restricted Boltzmann Machine&#xff08;受限玻尔兹曼机&#xff09;&#xff0c;简称RBM&#xff0c;不是教科书里那个被反复引用却没人真去跑通的抽象符号&am…...

Unity角色移动手感优化:从WASD输入到物理移动的完整链路

1. 这不是“写个Input.GetAxis”就能跑通的移动逻辑在Unity项目里&#xff0c;只要角色需要被玩家操控&#xff0c;WASDQEShift这套组合键几乎就是默认配置——它不依赖鼠标、不强制视角绑定、兼容手柄映射&#xff0c;是PC端第三人称/第一人称角色最基础也最易被低估的交互层。…...