爬虫存储介质之CSV文件存储
本文章来自度娘
CSV文件存储
CSV,全称为Comma-Separated Values,中文可以叫做逗号分隔值或字符分隔值,其文件以纯文本形式
存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔。每条记
录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或者制表符。不过所有记录都有完
全相同的字段序列,相当于一个结构化表的纯文本形式。它比Excel文件更为简洁,XLS文本是电子表格,
它包含了文本、数值、公式和数据等内容,而CSV中不包含这些内容,就是特定字符分隔的纯文本,结构
简单清晰。所以,有时候用CSV来保存数据是比较方便的。本节中,我们来讲解Python读取和写入CSV文件
的过程。
写入这里首先来看一个最简单的例子:

首先,打开data.csv文件,然后指定打开的模式为w(即写入),获得文件句柄,随后调用csv库的writer( )
方法初始化写入对象,传入该句柄,然后再调用writerow( )方法传入每行的数据即可完成写入。
运行结束之后,会生成一个名为data.csv的文件,此时数据就成功写入了。直接以文本形式打开的话,
其内容如下:

可以看到,写入的文本默认以逗号分隔,调用一次writerow( )方法即可写入一行数据。用Excel打开的结果
如下所示:

如果想要修改列与列之间的分隔符,可以传入delimiter参数,其代码如下:

这里在初始化写入对象时传入delimiter为空格,此时输出结果的每一列就是以空格分隔了,内容如下:

另外,我们也可以调用writerows( )方法同时写入多行,此时参数就需要为二维列表,例如:

输出效果是相同的,内容如下:

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

这里先定义3个字段,用fieldnames表示,然后将其传给DictWriter来初始化一个字典写入对象,接着可以
调用writeheader( )方法先写入头信息,然后再调用writerow( )方法传入相应的字典即可。最终写入的结果
是完全相同的,内容如下:

这样就可以完成字典到CSV文件的写入了。
另外,如果想追加写入的话,可以修改文件的打开模式,即将open( )函数的第二个参数改为a,代码如下:

这样在上面的基础上再执行这段代码,文件内容便会变成:

如果要写入中文内容的话,可能会遇到字符编码的问题,此时需要给open( )参数指定编码格式。比如,
这里写入一行包含中文的数据,代码需要改写如下:
如果想以Excel去读取存储的CSV文件,最好的将分隔符设置为英文逗号,编码设置为utf-8-sig,经验所得。
如希望了解utf8与utf-8-sig编码间的区别,右转百度,有比较好的解释

这里需要给open( )函数指定编码,否则可能会发生编码错误。
另外,如果接触过pandas等库的话,可以调用DataFrame对象的to_csv( )方法来将数据写入CSV文件中。
读取
我们同样可以使用csv库来读取CSV文件。例如,将刚才写入的文件内容读取出来。相关代码如下:

运行结果如下:

这里我们构造的是Reader对象,通过遍历输出了每行的内容,每一行都是一个列表形式。注意,如果
CSV文件中包含中文的话,还需要指定文件编码。
爬虫存储介质之CSV文件存储的更多相关文章
- Python3编写网络爬虫10-数据存储方式三-CSV文件存储
3.CSV文件存储 CSV 全称 Comma-Separated Values 中文叫做逗号分隔值或者字符分隔值,文件以纯文本形式存储表格数据.文件是一个字符序列 可以由任意数目的记录组成相当于一个结 ...
- json和csv文件存储
一. json 1:基本概念 1.1 Json和Javascript JSON, 全称JavaScript Object Notation,它通过对象和数组的组合来表示数据.在JavaScript中一 ...
- 使用 CSV 文件存储
将爬取到的数据以 CSV 文件形式存储: import csv import requests req = requests.get("http://www.baidu.com/" ...
- 爬虫文件存储:txt文档,json文件,csv文件
5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1.1 TXT文本存储 将数 ...
- Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)
序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...
- Go Web:数据存储(2)——CSV文件
存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...
- Python3爬虫(八) 数据存储之TXT、JSON、CSV
Infi-chu: http://www.cnblogs.com/Infi-chu/ TXT文本存储 TXT文本存储,方便,简单,几乎适用于任何平台.但是不利于检索. 1.举例: 使用requests ...
- 技巧-如何通过hive开发平台上传csv文件
通过数据交换平台上传较大的文件时,经常会出现导入失败情况,换种方式通过新数据开发平台(stark)也可以轻松实现外部数据与hive的数据关联. --第一步.导入csv文件到hive --stark数据 ...
- Selenium+java - 使用csv文件做数据驱动
前言 早期我们使用TestNG 来做数据驱动进行测试,测试数据是写在测试用例脚本中.这会使得测试脚本的维护工作量很大.因此我们可以将测试的数据和脚本分开. 而我们经常使用会使用csv文件来做为导出数据 ...
随机推荐
- Pytest权威教程08-使用tmp目录和文件
目录 使用tmp目录和文件 tmp_path Fixture方法 tmp_path_factory Fixture方法 tmpdir Fixture方法 tmpdir_factory Fixture方 ...
- Iptables 之二扩展模块 nat
问题一:如果开发被动模式的ftp服务? 21号端口是命令连接端口,数据连接端口不固定 三步骤: (1)装载ftp追踪时的专用的模块 /lib/modules/$(uname-r)/kernel/ker ...
- P5385 [Cnoi2019]须臾幻境(LCT+主席树,思维题)
题目 P5385 [Cnoi2019]须臾幻境 做法 考虑一条边\((u,v)\)是否\([L,R]\)中的贡献:\([L,R]\)中第一条位于\(u,v\)链的边,则减少了一个联通块 实现:\(LC ...
- ZR#1004
ZR#1004 解法: 对于 $ (x^2 + y)^2 \equiv (x^2 - y)^2 + 1 \pmod p $ 化简并整理得 $ 4x^2y \equiv 1 \pmod p $ 即 $ ...
- docker技术入门(1)
1Docker技术介绍 DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实 ...
- 采用正则表达式实现startWith、endWith效果函数
startsWith函数,时Java中的 在js使用时他并不是每个浏览器都有的,所以我们一般要重写一下这个函数 采用正则表达式实现startWith.endWith效果函数 String.protot ...
- 2019秋季 关于C语言指针等探索
C语言指针探索 本篇博客由学生所写,如有错误之处,请在评论区留言 1.输出指针所储存的地址,使指针间接访问所储存地址的内容 #include <stdio.h> int main(void ...
- 【软工实践】团队项目Snug-需求分析报告
组长博客链接 博客链接 团队项目整体计划安排 阶段序列 阶段时间 主要阶段任务 完成情况 第一阶段 9.6 团队成立 已完成 第二阶段 9.6-9.13 课题选择 已完成 第三阶段 9.13-9.18 ...
- XAMPP+TestLink
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了.它可以在Windo ...
- 使用Eclipse创建Web项目时WEB-INF下找不到web.xml问题详解
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yjrguxing/article/deta ...