bs4解析数据和csv文件
\b 检测所在的位置是否是单词边界(任何可以将不同的单词进行区分的符号:空白符号,标点符号,字符串开头,字符串结尾)
^ 检测是否是字符串开头
$ 检测是否是字符串结尾
csv
保存数据
-
什么是csv文件
-
读操作
- reader
from csv import reader, DictReader # a.reader # 创建根据文件对象创建对应的reader,获取文件内容 with open('files/电影.csv', encoding='utf-8', newline='') as f:r1 = reader(f)print(next(r1))print(list(r1))
- Dictreader
# b.DictReader with open('files/电影.csv', encoding='utf-8', newline='') as f:r2 = DictReader(f)print(next(r2))for x in r2:print(x)
-
写操作
- writer
from csv import writer, DictWriter # a. writer with open('files/student1.csv', 'w', encoding='utf-8', newline='') as f:# 1.根据文件对象创建writer对象w1 = writer(f)# 2.写入数据# 1)一次写一行w1.writerow(['姓名', '性别', '年龄'])w1.writerow(['小明', '男', 22])# 2)一次写多行w1.writerows([('小花', '女', 18),['张三', '男', 30]])
- Dictwriter
# b. DictWriter with open('files/student2.csv', 'w', encoding='utf-8', newline='') as f:# 1.根据文件对象创建writer对象w2 = DictWriter(f, ['姓名', '性别', '年龄'])# 2.写入数据# 1)将字典的键作为第一行写入文件w2.writeheader()w2.writerow({'姓名': '小明', '性别': '男', '年龄': 22})w2.writerows([{'姓名': '小花', '性别': '女', '年龄': 17},{'姓名': '小红', '性别': '女', '年龄': 18},{'姓名': '张三', '性别': '男', '年龄': 30}])
bs4
- css选择器
# 元素选择器:定位特定类型的所有元素。例如,h1 定位页面上的所有 h1 元素。
h1 {/* 样式 */
}
# 类选择器:定位所有具有特定类的元素。例如,.my-class 定位所有具有类 my-class 的元素。
.my-class {/* 样式 */
}
# ID 选择器:定位具有特定 ID 的单个元素。例如,#my-id 定位具有 ID my-id 的元素。
#my-id {/* 样式 */
}
# 属性选择器:定位具有特定属性的元素。例如,[type="text"] 定位所有具有属性 type 设置为 text 的元素。
[type="text"] {/* 样式 */
}
- CSS 父子选择器用于定位特定 HTML 元素的子元素并对其应用样式。以下是一些常见的 CSS 父子选择器:
div p {/* 样式 */
}
子元素选择器:定位特定元素的直接子元素。例如,ul > li 定位所有 ul 元素的直接子元素 li 元素。
ul > li {/* 样式 */
}
相邻兄弟选择器:定位特定元素的下一个兄弟元素。例如,h1 + p 定位紧接在 h1 元素后的第一个 p 元素
h1 + p {/* 样式 */
}
通用兄弟选择器:定位特定元素之后的所有兄弟元素。例如,h1 ~ p 定位所有在 h1 元素之后的 p 元素。
h1 ~ p {/* 样式 */
}
你还可以组合父子选择器以定位特定元素的子元素。例如,div > p.my-class 定位所有 div 元素的直接子元素 p 元素,并且该元素具有类 my-class。
bs4语法
BeautifulSoup 是一个 Python 库,用于从 HTML 或 XML 文件中提取数据。它可以帮助你解析 HTML 或 XML 文件,并从中提取所需的数据
from bs4 import BeautifulSoup# 将 HTML 文件加载到 BeautifulSoup 中
with open("index.html") as fp:soup = BeautifulSoup(fp, "html.parser")# 查找所有带有 class="my-class" 的 div 元素
divs = soup.find_all("div", class_="my-class")# 打印每个 div 元素的文本内容
for div in divs:print(div.text)from bs4 import BeautifulSoup# 将 HTML 文件加载到 BeautifulSoup 中
with open("index.html") as fp:soup = BeautifulSoup(fp, "html.parser")# 使用 select 方法查找所有带有 class="my-class" 的 div 元素
divs = soup.select("div.my-class")# 打印每个 div 元素的文本内容
for div in divs:print(div.text)from bs4 import BeautifulSoup# 1. 根据网页源代码创建soup对象: BeautifulSoup(网页源代码, 'lxml')
f = open('files/data.html', encoding='utf-8')
soup = BeautifulSoup(f.read(), 'lxml')
f.close()# 2. 获取标签
# soup对象.select(css选择器) - 获取整个网页中选择器选中的所有标签,返回值是一个列表,列表中的元素是标签对象(找不到返回空列表)
# soup对象.select_one(css选择器) - 获取整个网页中选择器选中的第一个标签,返回值是标签对象(找不到返回None)
# 标签对象.select(css选择器) - 获取指定标签中css选择器选中的所有标签
# 标签对象.select_one(css选择器) - 获取指定标签中css选择器选中的第一个标签
result = soup.select('p')
print(result)# result = soup.select('.c1')
# print(result)
#
# result = soup.select_one('p')
# print(result)
#
# result = soup.select('div p')
# print(result)box1 = soup.select_one('#box1')
result = box1.select('p')
print(result)p1 = soup.select_one('span>p')
a1 = box1.select_one('a')# 3. 获取标签内容和标签属性
# 标签对象.text - 获取标签内容
# 标签对象.attrs[属性名] - 获取标签指定属性的值print(p1.text) # '我是段落5'
print(a1.text) # '我是超链接3'
print(a1.attrs['href']) # 'https://www.baidu.com'
相关文章:

bs4解析数据和csv文件
\b 检测所在的位置是否是单词边界(任何可以将不同的单词进行区分的符号:空白符号,标点符号,字符串开头,字符串结尾) ^ 检测是否是字符串开头 $ 检测是否是字符串结尾 csv保存数据 什么是csv文件 读操作…...

Linux中Buffer和Cache的区别
Linux中Buffer和Cache的区别 free命令中会有一项buff/cache, 通过man free可以看到这里的关于buff/cache的介绍 buff/cache包含两部分 buffers:内核缓存区用到的内存,对应/proc/meminfo中Buffers的值 cache:内核页缓存和Slab用到的内存,对应/proc/mem…...

Docker 镜像使用
目录 1、列出镜像列表 2、获取一个新的镜像 3、查找镜像 4、拖取镜像 5、删除镜像 6、创建镜像 a.更新镜像 b.构建镜像 设置镜像标签 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 …...

Java阶段一Day10
Java阶段一Day10 文章目录Java阶段一Day10抽象类和抽象方法接口案例小练习引用类型数组教师总结回顾:精华笔记:笔记:补充:抽象类和抽象方法 关键字:abstract 只有方法的定义,没有具体的实现(连…...

触摸屏与PLC之间如何快速实现无线PPI通信?
PPI协议是西门子为S7-200专门开发的通信协议,是不开放的协议,CPU自带的两个通信口(Port0,Port1)均支持该协议,S7-200的一些通信模块也支持PPI协议。编程软件Micro/WIN与CPU进行编程通信也使用PPI协议&#…...

【华为OD机试 2023最新 】 羊、狼、农夫过河(C++ 100%)
题目描述 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。 要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。 只计算农夫去对岸的次数,回程时农夫不会运送羊和狼。 备注:农…...

Java中关于try、catch、finally中的细节分析
本文讲解的是关于Java中关于try、catch、finally中一些问题 下面看一个例子(例1),来讲解java里面中try、catch、finally的处理流程 public class TryCatchFinally {SuppressWarnings("finally")public static final String test(…...

Zookeeper原理
一、概念 Zookeeper是一个开源的、分布式的,为分布式应用提供协调服务的Apache项目。封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 二、选举机制 首先是几个概念: myid:节点的唯一标识&…...

关于FPGA如何快速生成模块的例化模板(实用)
关于FPGA如何快速生成模块的例化模板(实用) 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA如何快速生成模块的例化模板(实用)一、引言二、快速生成例化模块的几种方法1. IP核的例化模…...

在 Python 中将字符串转换为集合
使用 set() 类将字符串转换为集合,例如 my_set set(my_str)。 set() 类将通过拆分其字符将字符串转换为集合。 my_str one# ✅ 通过拆分字符将字符串转换为集合 my_set set(my_str) print(my_set) # 👉️ {n, o, e}# -----------------------------…...

大数据Flink进阶(十三):Flink 任务提交模式
文章目录 Flink 任务提交模式 一、会话模式(Session Mode) 二、单作业模式(Per-Job Mode) 三、应用模式(Application Mode) Flink 任务提交模式 Flink分布式计算框架可以基于多种模式部署,…...

day11—编程题
文章目录1.第一题1.1题目1.2涉及的相关知识1.3思路1.4解题2.第二题2.1题目2.2思路2.3解题1.第一题 1.1题目 描述: 将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法࿰…...

CentOS下安装crontab及cron表达式解析
目录安装依赖服务启停任务操作参数简要说明1、参数说明2、cron表达式解析(1)定义(2)结构(3)字段含义(4)注意事项(5)常用表达式例子crontab示例结尾安装依赖 # vixie-cron软件包是crontab的主程序 # crontabs软件包是用来安装、卸装、或列举用来驱动crontab守护进程的表格的程序…...

python 绘制训练曲线--基于Numpy.convolve曲线平均滤波
文章目录1 训练曲线--震荡的非常厉害2 基于Numpy.convolve曲线平均滤波3 python 绘制训练曲线 平滑处理--Savitzky-Golay 滤波器曲线平滑4 python 绘制训练曲线--插值法 曲线平滑处理1 训练曲线–震荡的非常厉害 上一篇文章用python自己绘制训练曲线震荡的非常厉害(…...

状态管理插件vuex
概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 作用: 如果我们使用全局总线要让所有的组件…...

arthas—阿里开源的Java诊断工具
一、arthas简述Arthas 是阿里开源的Java诊断工具。安装在系统所在服务器,有着强大的能力,是一个开发运维神器。主要功能在线热替换代码/代码增强全局视角的性能分析查看方法执行情况,帮助跟踪偶现的bug支持JDK6二、官方资料官方文档的介绍非常…...

Java学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...

OpenGL API 之 glVertexAttribPointer
glVertexAttribPointer 定义通用顶点属性数据的数组 C Specification format void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer); Parameters nametypedescriptionindexGLuint Specifies the inde…...

蓝桥杯真题4
[蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 KKK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NNN 块巧克力,其中第 iii 块是 HiWiH_i \times W_iHiWi 的方格组成的长方形。 为了公平起见,小明需要从这 NN…...

day02_基本语法
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记Java2307_沐沐霸的博客-CSDN博客 零、复习昨日 一、程序&Java介绍 二、安装JDK&配置环境变量 三、DOS命令 四、第一个程序[重点] 五、Java语言规范[重点] 六、运行机制 七、Typora工具使用 附录:…...

多线程之单例模式
前言 本篇介绍的是wait与notify方法,通过wait来顺序控制执行一些代码,了解单例模式,进行单例模式的简单实现,介绍饿汉模式下出现线程不安全的问题与解决;如有错误,请在评论区指正,让我们一起交…...

2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版
会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org 2023年绿色建筑国际会议(ICoGB 2023)将围绕“绿色建筑”的最新研究领域而展开,为…...

Python中进程和线程到底有什么区别?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。…...

2023美赛春季赛F题思路数据代码论文分享
文章目录赛题思路赛题详情参赛建议(个人见解)选择队友及任务分配问题(重要程度:5星)2023美赛春季赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取…...

念一句咒语 AI 就帮我写一个应用,我人麻了...
原文链接:https://forum.laf.run/d/232 作为人类,我们时常会有自己独特的想法和脑洞大开的创意。然而,这些想法往往因为成本过高而无法实现,毕竟每个人的能力和精力都是有限的,尤其是对于程序员而言,不可能…...

开放平台设计之接口签名认证
前言 当前时代,数据是王道!当我们自己的平台有了足够大的数据量,就有可能诞生一个开放平台宫第三方分析、使用。那么我们怎么去实现对外部调用接口的控制与鉴权呢?这是我们今天的重点——接口签名认证!!&a…...

Vue自创插件发布到npm以及使用方法
Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…...

合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术
合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡…...

Java刷题,蓝桥杯省赛第十二届(第一场)4-------------6
4、相乘题目本题总分:10 分【问题描述】小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后…...

Docker Cgroups——Docker 资源限制背后的技术原理
Docker Cgroups——Docker 资源限制背后的技术原理虽然在容器内部进程只能看到“掩饰”过的视图,但是在宿主机上,它就是一个普通的进程,与其他所有进程之间是平等竞争的关系。这就意味着虽然表面上被隔离了,但它实际上在与其他进程…...