〖Python网络爬虫实战⑲〗- 数据存储之CSV文件

news2024/11/27 6:36:41
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ 

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)

        即将转为付费专栏,更多详细请看,五一或有优惠活动哦。

关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战⑱〗- 数据存储之TXT纯文本

🌟上节回顾

上一节我们介绍了 Python 将我们获取到的数据保存为 TXT 文件的方法,这种方法简单易用,操作高效,是一种最基本的保存数据的方法。保存TXT文件是非常简单的。我们今天准备来介绍关于CSV文件的保存的相关知识。

⭐️CSV 文件存储

CSV是一种常用的文件格式,用于存储纯文本数据,并且每行数据都使用逗号分隔。CSV文件通常在不同的应用程序之间进行数据交换,也可以在文本编辑器中用于存储和编辑数据。

CSV文件的格式非常简单,每行数据都由逗号分隔,并且每行数据都包含标题行和数据行。标题行通常包含文件名、文件类型、记录的开始和结束位置等信息。数据行包含实际的数据数据,这些数据可以是任何类型的文本数据,例如字符串、数字、日期等。

🌟数据写入

这里先看一个最简单的例子:

import csv

with open('data.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['id', 'name', 'age'])

在上述代码中,csv 模块的 writerow 方法用于将一行数据写入 CSV 文件。在打开文件时,使用 'w' 模式打开文件,表示以写入模式打开文件,如果文件不存在,则会创建文件。如果文件已经存在,则会将文件内容清空。

在 with 语句块中,创建一个 csv.writer 对象,并将其绑定到文件对象 f 上。然后,调用 writerow 方法将标题行写入文件。

在实际使用中,可以将数据写入 CSV 文件,每行数据之间用逗号分隔。我们运行效果如下:

✨字典写入

但是一般情况下,爬虫爬取的都是结构化数据,我们一般会用字典来表示。在 csv 库中也提供了字典的写入方式,示例如下:

import csv

with open('data.csv', 'w') as f:
    writer = csv.DictWriter(f, fieldnames=['id', 'name', 'age'])
    writer.writeheader()
    writer.writerow({'id': '1', 'name': 'Tom', 'age': '18'})

在上述代码中,使用 csv.DictWriter 类创建一个 CSV 文件的写入器。fieldnames 参数指定了 CSV 文件中每个字段的名称。然后,调用 writeheader 方法写入标题行。最后,调用 writerow 方法将数据写入文件。这样就可以完成字典到 CSV 文件的写入了。

✨追加

如果想追加写入的话,可以修改文件的打开模式,即将 open 函数的第二个参数改成 a,代码如下:

import csv

with open('data.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerow({'id': '1', 'name': 'Tom', 'age': '18'})

这样在上面的基础上再执行这段代码,程序会在原来的csv文件的基础上,追加内容,这里和之前说的TXT的追加模式一样。

这里要注意,如果要写入中文内容的话,可能会遇到字符编码的问题,此时需要给 open 参数指定编码格式。

f = open('data.csv',mode='w',encoding='utf-8')

大家可以看到,我们这里encoding 参数指定了文件的编码方式,这里是 UTF-8。

🌟读取

✨csv

我们同样可以使用 csv 库来读取 CSV 文件。例如,将刚才写入的文件内容读取出来,相关代码如下:

import csv  

with open('data.csv', 'r', encoding='utf-8') as f:  
    reader = csv.reader(f)  
    for row in reader:  
        print(row)

运行结果:

['id', 'name', 'age']
['1', 'Tom', '18']

这个代码段打开名为 data.csv 的文件,读取它的内容并将每一行打印出来。这里我们构造的是 reader 对象,通过遍历输出了每行的内容,每一行都是一个列表形式。

✨pandas

如果大家接触过 pandas 的话,我们还可以利用 read_csv 方法将数据从 CSV 中读取出来,例如:

import pandas as pd  

df = pd.read_csv('data.csv')  
print(df)

我们这个代码段导入名为 data.csv 的 CSV 文件,并将其存储在名为 df 的 Pandas DataFrame 中。然后,使用 print(df) 语句打印出 DataFrame 的内容。

🌟总结

我们了解了 CSV 文件的写入和读取方式。这也是一种常用的数据存储方式,需要熟练掌握。但是,CSV文件的使用也存在一些限制和局限性。例如,CSV文件只能存储纯文本数据,不能存储二进制数据或者复杂的数据结构。此外,CSV文件的格式比较固定,不能自定义格式或者添加数据分隔符等。

为了解决这些问题,我们需要寻找更好的数据存储方式。我们一般会使用“JSON”的数据存储格式,它可以存储多种类型的数据,并且支持自定义格式和数据分隔符等。后面我们也会讲到JSON数据的保存。

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

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

相关文章

第二部分——长难句——第二章——复合句——第一节——名词性从句

首先复合句是什么呢? 多件事一样重要就叫并列句,如果不一样重要就叫并列句。 复合句主句从句 下面我们来看一个例句: 找到从句之后剩下来的不就是主句吗? 一,宾语从句 (一)宾语从句的含义 一…

字符串中的第一个唯一字符

题目:字符串中的第一个唯一字符 思路一:暴力查找,时间复杂度 思路一:开辟检查重复数组,以空间换时间,时间复杂度 这段代码的作用是在一个字符串 s 中找到第一个不重复(只出现一次)的字符&#…

kafka和rocketmq区别对比

Kafka和RocketMQ是目前非常流行的分布式消息系统,它们都能够高效地处理海量的消息数据。在本文中,我们将对Kafka和RocketMQ进行技术比较,分析它们在各方面的优缺点,以便读者在选择消息系统时能够做出更加明智的决策。 一、架构设计…

Java-volatile实现详解(从java到汇编)

在Java内存模型一节,除了synchronized外,我们还提到一个常用关键词----volatile,我们说过volatile保证了并发环境的可见性和顺序性,使用volatile修饰的变量,当然值发生改变时,可以同步到其他线程&#xff0…

【python】你的表情包缺不缺?我猜你缺了~来批量获取一波吧~

目录 前言环境使用:模块使用:如何去实现本次案例: <通用模板>代码展示尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 在我们的生活中&#xff0c;总少不了表情包来调剂 少了表情包就会少了很多趣味 今天就来教大家如何批量下载我们的表情包 环…

力扣刷题2023-04-29-1——题目:1431. 拥有最多糖果的孩子

题目&#xff1a; 给你一个数组 candies 和一个整数 extraCandies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子&#xff0c;检查是否存在一种方案&#xff0c;将额外的 extraCandies 个糖果分配给孩子们之后&#xff0c;此孩子有 最多 的糖果…

接触Word的编辑保护【简单版】

首先&#xff0c;我们遇到的情况是下图这样的&#xff1a; 点一下停止保护&#xff0c;是下图这样的&#xff1a; 开始解决&#xff1a; 第一种方式&#xff1a;另存为Word Xml 存好了&#xff0c; 打开如下图&#xff08;我用VS打开的&#xff0c;最好找个能够格式化代码的编…

秘密是如何被泄露的?自建文件分享神器HFS

近年来&#xff0c;随着互联网技术的飞速发展&#xff0c;我们对于互联网的依赖也日益增加。利用互联网这种高效便捷的工具&#xff0c;我们可以随时随地进行文件的传输、图片的分享以及与他人的交流。然而&#xff0c;看似安全的聊天窗口&#xff0c;其实背后是庞大的互联网算…

MybatisPlus动态表名

核心代码 mybatisplus的配置 Configuration public class MybatisPlusConfig {// 这里是存储需要动态变化的表&#xff0c;防止乱操作static List<String> tableList() {List<String> tables new ArrayList<>();//表名tables.add("user");return…

Flask框架的学习---01

1.工程搭建&#xff1a; 安装flask: pip3 install flask 终端运行&#xff1a;flask run 绑定IP地址和端口&#xff1a;Flask run -h 127.0.0.1 -p 8083 修改端口号生产环境&#xff1a;set FLASK_ENVproduction开发模式&#xff1a;set FLASK_ENVdevelopment 虽然 flask …

ChatGPT真的有那么牛吗?

ChatGPT真的有那么牛吗&#xff1f;ChatGPT真的有那么牛吗&#xff1f; 作为一款大型语言模型&#xff0c;ChatGPT确实具有很高的自然语言处理和生成能力&#xff0c;可以生成流畅、准确和有逻辑性的语言&#xff0c;而且能够理解和回答广泛的问题。 它是目前最先进和最强大的…

《HelloGitHub》第 85 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

奇舞周刊第 491 期 初探 Web 客户端追踪技术

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 初探 Web 客户端追踪技术 浏览器的追踪技术是一把双刃剑&#xff0c;它建立了用户个人信息和网站之间的连接&#xff0c;合理地使用能够大大提高用户的体验&#xff0c;但是同时也…

【测试开发】第二节.测开基础篇

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;Java测试开发 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 一、软件测…

盈泰德带你了解产品表面缺陷检测系统

与前几年相比&#xff0c;机器视觉行业在表面检测方面有了很大的突破。检测产品表面的划痕、污渍不再困难&#xff0c;广泛应用于金属、玻璃、手机屏幕、液晶面板等行业的表面检测。 机器视觉检测有以下四种常用的检查和照明方法&#xff1a; 同轴照明、低角度照明、背光照明…

最全最简单scrapy框架搭建(附源码案例)

最近在做项目中,需要网页的大批数据,查询数据是一项体力劳动,原本的我 然而,奋斗了一天的我查到的数据却寥寥无几,后来的我是这样的 作为一个cv工程师,复制粘贴原本是一件很快乐的事情但是它缺给了我无尽的折磨,所以我利用4天时间查询各种资料,翻阅各种视频,终于了解了一个面向…

【五一创作】[论文笔记]图片人群计数CSRNet,Switch-CNN

2018(有代码)_CSRNet (10次) 应用最最广泛的&#xff1a;e, is the most widely used while working with counting problems. 2018_CVPR——CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes https://arxiv.org/abs/1802.100…

[遗传学]近亲繁殖与杂种优势

目录 近交与杂交的遗传学效应 (1) 近交使基因纯和,杂交使基因杂合 近交效应: (2) 近交系数与亲缘系数 (3)运用通径分析方法计算近交系数和亲缘系数 ① 通径与通径链 ② 通径分析的理论及其应用 (4)近交降低群体基因型值的平均值,杂交提高群体均值 (5)近交使群体分化,杂…

mysql卸载及Ubuntu降级mysql并安装MySQL5.7并修改键盘失灵问题及 centos_x86.64安装MySQL5.7及修改密码及设置访问

卸载mysql 可以看centos_x86.64安装MySQL5.7标题的卸载 查看MySQL的依赖项 dpkg --list|grep mysql 卸载 mysql-common sudo apt remove mysql-common 卸载 mysql-server sudo apt autoremove --purge mysql-server 清除残留数据 dpkg -l|grep ^rc|awk ‘{print$2}’|sudo …

java.lang.NoSuchFieldException: TYPE

环境: IDEA 2022.1.4 SQL 2012 今日启动SpringBoot项目&#xff0c;出现 Initializing Spring embedded WebApplicationContext。 启动失败&#xff0c;我百度了下&#xff0c;说可能是下了断点&#xff0c;可我没有下断点。 2023-04-29 15:40:02.039 INFO 13676 --- [ …