项目十:学会python爬虫数据保存(小白圆满级)

前言

上篇我们学会的文本文件、csv文件和excel文件的相关基础知识和操作,这一次我们再来了解一下四个文件操作方式

存储方法
HTML文件

将数据保存为HTML格式,可以直接在浏览器中查看。

使用字符串拼接将数据保存为HTML格式。

代码案例

# 创建数据列表
data = [{'name': 'Alice', 'age': 25, 'city': 'New York'},{'name': 'Bob', 'age': 30, 'city': 'San Francisco'},# 其他数据行
]# 构建 HTML 内容
html_data = "<h1>Users</h1>\n"
for item in data:html_data += "<div>\n"for key, value in item.items():html_data += f"  <p>{key}: {value}</p>\n"html_data += "</div>\n"# 将HTML内容写入文件
with open('data.html', 'w', encoding='utf-8') as f:f.write(html_data)

输出结果

代码解释(解释较难的代码)

1.初始化一个名为 html_data 的字符串,它将用来存储最终的HTML内容。首先添加一个 <h1> 标签,表示一级标题,标题文本为 "Users"。

html_data = "<h1>Users</h1>\n"

2.开始一个 for 循环,遍历 data 列表中的每个字典(即每个用户的信息)。

for item in data:

3.对于每个用户,html_data 字符串会追加一个新的 <div> 标签,用来包裹该用户的详细信息。

 html_data += "<div>\n"

4.在这个 <div> 内部,开始另一个 for 循环,遍历当前用户字典 item 中的每个键值对。

for key, value in item.items():

5.对于每个键值对,html_data 字符串会追加一个带有格式化文本的 <p> 标签。这里使用了格式化字符串字面量(f-string),将键(key)和值(value)插入到 <p> 标签的文本中,并以冒号分隔。

html_data += f" <p>{key}: {value}</p>\n"

6.在添加完当前用户的所有信息后,html_data 字符串会追加一个 </div> 标签来关闭 <div>

html_data += "</div>\n"
JSON文件

以JSON格式保存数据,易于阅读和跨语言交换数据。

使用json模块将数据保存为JSON格式。

代码案例

import json
data = {"name": "John", "age": 30, "city": "New York"}
with open('data.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)

输出结果

代码解释

 1.导入json模块:

import json

这行代码从Python标准库中导入了json模块,该模块用于处理JSON数据。

2.创建字典数据:

data = {"name": "John", "age": 30, "city": "New York"}

这里创建了一个名为data的字典,包含了键值对:"name"对应"John""age"对应30"city"对应"New York"

3.打开文件:

with open('data.json', 'w', encoding='utf-8') as f:

使用with语句打开一个名为data.json的文件,用于写入操作:

  • 'data.json'是文件的名称。
  • 'w'表示写入模式,如果文件已存在,它会被覆盖;如果不存在,将会创建一个新文件。
  • encoding='utf-8'确保文件以UTF-8编码保存,这对于包含非ASCII字符的数据很重要。

4.使用json.dump()写入JSON数据:

json.dump(data, f, ensure_ascii=False, indent=4)

json.dump()函数用于将Python对象转换为JSON格式的字符串,并写入到指定的文件中:

  • data是要转换为JSON格式的字典对象。
  • f是文件对象,即上面打开的data.json文件。
  • ensure_ascii=False指示json.dump()允许输出非ASCII字符,而不是将它们转义为\uXXXX形式。
  • indent=4指定了输出的缩进级别,使得JSON文件具有可读性,每个层级缩进4个空格。

整个代码块的作用是创建一个包含个人信息的字典,并将其以格式化的JSON格式保存到文本文件中。这种格式的文件易于阅读和处理,常用于数据交换和配置文件。

XML文件

可扩展标记语言,适合存储结构化数据。

使用xml.etree.ElementTree模块将数据保存为XML格式。

代码案例

#导入ElementTree模块
import xml.etree.ElementTree as ET
# 创建数据列表
data = [{'name': 'Alice', 'age': 25, 'city': 'New York'},{'name': 'Bob', 'age': 30, 'city': 'San Francisco'}
]
#创建根元素
root = ET.Element('users')
# 遍历数据列表,创建子元素
for item in data:user = ET.SubElement(root, 'user') # 创建子元素# 遍历字典,创建属性子元素for key, value in item.items():# 创建属性子元素ET.SubElement(user, key).text = str(value)
# 写入XML文件
tree = ET.ElementTree(root)
tree.write('data.xml', encoding='utf-8', xml_declaration=True)

输出结果

数据库文件

使用关系型数据库(如MySQL、PostgreSQL)或非关系型数据库(如MongoDB)存储结构化数据。

使用sqlite3模块将数据保存到SQLite数据库中。

代码案例

import sqlite3#导入sqlite3模块conn = sqlite3.connect('data.db')#连接到数据库
cursor = conn.cursor()#创建游标
#创建users表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (name TEXT,age INTEGER,city TEXT
)
''')
#插入数据
data = ('John', 30, 'New York')
#?占位符,防止SQL注入攻击
cursor.execute('INSERT INTO users VALUES (?, ?, ?)', data)
conn.commit()#提交事务
cursor.close()#关闭游标
conn.close()#关闭连接

输出结果

好了,今日分享到此一游,我是好运,想要好运。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3431.shtml

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

相关文章

Cookie、Session以及Token的区别

Cookei、Session以及Token总的来说都是为了实现客户端访问服务器数据而利用的一种手段&#xff0c;可以把服务器数据看成是密码箱&#xff0c;而它们是三种不同的钥匙。 一、定义 1.Cookie 客户端第一次访问服务器时&#xff0c;服务器返回cookie给客户端A&#xff0c;客户端…

ABTest如何计算最小样本量-工具篇

如果是比例类指标&#xff0c;有一个可以快速计算最小样本量的工具&#xff1a; https://www.evanmiller.org/ab-testing/sample-size.html 计算样本量有4个要输入的参数&#xff1a;①一类错误概率&#xff0c;②二类错误概率 &#xff08;一般是取固定取值&#xff09;&…

第 394 场 LeetCode 周赛题解

A 统计特殊字母的数量 I 哈希&#xff1a;遍历然后枚举 class Solution {public:int numberOfSpecialChars(string word) {unordered_map<char, int> m;for (auto ch : word)m[ch] 1;int res 0;for (char ch a; ch < z; ch)if (m.count(ch) && m.count(A …

【SpringCloud】OpenFeign高级特性

【SpringCloud】OpenFeign高级特性 文章目录 【SpringCloud】OpenFeign高级特性1. 超时控制1.1 全局配置1.2 指定配置 2. 重试机制3. 替换Http客户端3.1 引入依赖3.2 配置 4. 请求/响应压缩5. 日志打印6. 综合配置 1. 超时控制 默认OpenFeign客户端等待60秒钟&#xff0c;但是服…

8.4.1 实验1:创建 VLAN 和划分端口

1、实验目的 通过本实验可以掌握&#xff1a; VLAN的概念。创建VLAN的方法。把交换机端口划分到VLAN中的方法。 2、实验拓扑 创建 VLAN 和划分端口的实验拓扑如下图所示。 图8-5 创建 VLAN 和划分端口的实验拓扑 3、实验步骤 &#xff08;1&#xff09;实验准备 S1#eras…

创建一个空的maven项目,整合SpringBoot和Redis

创建一个空的maven项目&#xff0c;整合SpringBoot和Redis 创建空的maven项目 在最新版的idea中创建maven项目的时候会让选择模板 如下图&#xff1a; 我们选择quickstart快速开始模板&#xff0c;quickstart快速开始模板创建的maven项目里面什么都不带&#xff0c;只有一个…

苹果手机里的HEIC图片可以转换成普通的JPG格式吗?什么是HEIC图片格式?

在现代社会中&#xff0c;随着智能手机技术的不断发展&#xff0c;我们越来越依赖于手机来记录生活的点滴。其中&#xff0c;拍照成为了人们记录生活的重要手段之一。苹果手机作为市场上的热门品牌&#xff0c;其拍摄的照片质量自然也是备受赞誉。然而&#xff0c;苹果手机默认…

Java面试八股之Java中==和equals()的区别

Java中和equals()的区别 操作符&#xff1a; 对于基本数据类型&#xff08;如int、char、boolean等&#xff09;&#xff0c;比较的是它们的值是否相等。 对于对象引用类型&#xff0c;比较的是两个对象的内存地址&#xff08;即是否指向同一个对象实例&#xff09;。也就是…

4.25日学习记录

[HZNUCTF 2023 preliminary]ppppop 对于php反序列化&#xff0c;在之前的学习中有过了解&#xff0c;但是对于序列化字符串的格式不是很了解&#xff0c;刚好接触这题&#xff0c;可以了解一下 序列化字符串的格式&#xff1a; 布尔型&#xff08;bool&#xff09;b&#xf…

ubuntu20.04开机运行java的sh脚本

用到了 rc.local 1、修改 /usr/lib/systemd/system/rc-local.service 在最下面添加 [Install] WantedBymulti-user.target 2、 系统没有 rc.local&#xff0c;需要手动创建 cd /etc vi rc.local在里面写入 /opt/start.sh chmod x /etc/rc.local # 添加可执行权限 chmod x…

基于小程序实现的惠农小店系统设计与开发

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

队列的实现(c语言实现)

队列的定义 队列&#xff08;Queue&#xff09;是一种特殊的线性数据结构&#xff0c;它遵循先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的原则。这意味着最早被添加到队列中的元素将是最先被移除的元素。队列的主要操作包括入队&#xff08;enqueue…

【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)

牛客对应链接&#xff1a;数组中的最长连续子序列_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 排序 模拟。 注意&#xff1a;值连续&#xff0c;位置可以不连续&#xff01;小心处理数字相同的情况。 二、代码 //值得学习的代码 class Solution { public:int MLS(vecto…

数字藏品:重塑艺术与科技的新媒介

数字藏品&#xff0c;这个新兴的词汇&#xff0c;正在逐渐渗透到我们的日常生活中。它不仅是一种新的艺术表达方式&#xff0c;更是一种科技与艺术相结合的全新媒介。那么&#xff0c;数字藏品究竟是什么呢&#xff1f; 首先&#xff0c;我们需要明确一点&#xff0c;数字藏品并…

LeetCode53. 最大子数组和

LeetCode53. 最大子数组和 解题思路dp 代码 /* 数组长度n 9,连续的区间 那区间长度为1的区间数量是&#xff0c;9个 区间长度为2的区间数量是8个 区间长度为3的连续的区间数量为7个 .... 区间长度为9的区间数量为1个 */ class Solution { public:int maxSubArray(vector<…

游戏工作室为什么要使用海外住宅IP防封?

当谈到游戏工作室时&#xff0c;它们通常以多开游戏账号来获取收益为主要目标。这种商业模式在游戏产业中已经成为一个独特而且颇具潜力的领域。然而&#xff0c;随之而来的是防封问题&#xff0c;特别是当游戏工作室试图通过多开账号来赚取更多收益时。因此&#xff0c;我们有…

13(第十二章,元数据管理)

目录 概述 业务驱动因素 目标和原则 基本概念 元数据与数据 元数据的类型 业务元数据 技术元数据 操作元数据 元数据注册标准 元数据来源 元数据架构类型 集中式元数据架构 分布式元数据架构 混合式元数据架构 双向元数据架构 方法 数据血缘和影响分析 度量…

Java操作 elasticsearch 8.1,如何实现索引的重建?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

U盘无法正常格式化?教你一个强力的办法

前言 电脑格式化U盘或者移动硬盘的操作&#xff0c;相信各位小伙伴都是有一定经历的。 如果设备正常&#xff0c;那么进入到【此电脑】&#xff0c;在对应的分区点击【鼠标右键】-【格式化】就可以把对应的存储设备恢复到初始状态。 但凡事都会有例外&#xff0c;比如在格式化…

【openLooKeng-1.10.0集群环境安装部署】

openLooKeng-1.10.0集群环境安装部署 一、摘要二、正文1. 环境说明2. 集群拓扑图3. 安装过程(以root用户安装)3.1 在Coordinator和Worker两个节点都需要安装jdk1.8+3.2 在Coordinator上安装配置openLooKeng3.3 在Worker节点上进行配置openLooKeng3.4 在Coordinator节点上先启…