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

news/2025/2/22 0:35:35/
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ 

                python项目实战

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

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

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

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

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

 最近更新

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

🌟上节回顾

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

⭐️CSV 文件存储

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

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

🌟数据写入

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

import csvwith 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 csvwith 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 csvwith 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.ppmy.cn/news/54093.html

相关文章

STM32F4_LCD液晶显示详解

目录 1. LCD简介 2. TFT_LCD简介 2.1 LCD屏显示原理 2.2 TFTLCD硬件分析 2.3 3.5寸 16位80并口驱动 2.4 NT35310驱动时序 2.5 TFTLCD驱动流程 2.6 显存指令 2.6.1 0xD3:读取LCD控制器的ID 2.6.2 0x36:控制扫描方向 2.6.3 0x2A:列地…

RabbitMQ --- 简介、快速入门

一、初识MQ 1.1、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应 异步通讯:就像发邮件,不需要马上回复 两种方式各有优劣,打电话可以立即得到响应,但…

Aspose.Pdf使用教程:在PDF文件中添加水印

Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能&am…

关于ABP使用工作单元的QA --- UOW方式/AOP/AOP思想的体现/ABP体现AOP

ABP中的工作单元如何使用?给我一些具体代码 在 ABP 框架中,工作单元(UnitOfWork)是一个重要的概念,它负责管理与数据库的交互操作。在应用程序中使用工作单元可以提高代码的可测试性和可维护性。 下面是在 ABP 应用程…

「SQL面试题库」 No_51 产品销售分析 III

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…

【Redis7】Redis7 持久化(重点:RDB与AOF重写机制)

【大家好,我是爱干饭的猿,本文重点介绍Redis7 持久化(重点:RDB与AOF重写机制)。 后续会继续分享Redis7和其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 …

Java核心技术 卷1-总结-19

Java核心技术 卷1-总结-19 Callable与Future执行器线程池 Callable与Future Runnable封装一个异步运行的任务,可以把它想象成为一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。 Callable接口是一个参数化的类型,只有…

和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 阿里内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工&#x…