首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 4.3 CSV 文件存储 在网络爬虫开发过程中,数据的存储是一个至关重要的环节。CSV(Comma-Separated Values,逗号分隔值)文件作为一种简单、通用的数据格式,因其易于读写、支持多种编程语言和工具操作的特点,成为网络爬虫数据存储的常用选择之一。本章将详细介绍如何在Python中使用CSV模块进行数据的读取、写入以及处理,以便高效地将爬取的数据保存到CSV文件中。 #### 4.3.1 CSV文件基础 CSV文件是一种纯文本文件,用于存储表格数据,如电子表格或数据库。在CSV文件中,数据以行为单位进行存储,每行数据由逗号(或其他分隔符,如制表符、分号等)分隔成多个字段。CSV文件的第一行通常作为表头,用于描述后续各行数据的含义。 #### 4.3.2 Python中的CSV模块 Python标准库中的`csv`模块提供了读写CSV文件的功能。该模块包含`reader`、`writer`、`DictReader`和`DictWriter`等类,分别用于读取和写入CSV文件。 - **csv.reader(csvfile, dialect='excel', **fmtparams)**:用于读取CSV文件。`csvfile`可以是一个打开的文件对象或任何具有`readline()`方法的对象。`dialect`参数用于指定CSV文件的格式,默认为`'excel'`,表示Excel的CSV格式。`**fmtparams`是可选的关键字参数,用于覆盖`dialect`中的设置。 - **csv.writer(csvfile, dialect='excel', **fmtparams)**:用于写入CSV文件。与`reader`类似,`csvfile`是文件对象,`dialect`和`**fmtparams`用于指定文件格式。 - **csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)**:以字典的形式读取CSV文件。如果`fieldnames`参数未提供,则第一行数据将被用作字段名。 - **csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)**:以字典的形式写入CSV文件。`fieldnames`是一个包含所有字段名的列表,用于定义CSV文件的列。 #### 4.3.3 写入CSV文件 假设我们爬取了一个网页上的商品信息,包括商品ID、名称、价格和库存量,现在需要将这些信息保存到CSV文件中。 ```python import csv # 商品数据列表 products = [ {'id': 1, 'name': '产品A', 'price': 100.0, 'stock': 100}, {'id': 2, 'name': '产品B', 'price': 200.0, 'stock': 50}, # ... 更多商品数据 ] # 定义CSV文件名 filename = 'products.csv' # 使用DictWriter写入CSV文件 with open(filename, mode='w', newline='', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=['id', 'name', 'price', 'stock']) # 写入表头 writer.writeheader() # 写入数据 for product in products: writer.writerow(product) print(f'数据已成功写入{filename}') ``` 在上述代码中,我们首先导入了`csv`模块,并定义了一个包含商品信息的列表`products`。然后,我们使用`with`语句打开(或创建)一个名为`products.csv`的文件,并设置模式为`'w'`(写入模式),`newline=''`用于防止在Windows系统中写入额外的空行,`encoding='utf-8'`确保文件以UTF-8编码保存。接着,我们创建了一个`DictWriter`对象,指定了字段名列表`fieldnames`,并调用了`writeheader()`方法写入表头。最后,通过遍历`products`列表,并使用`writerow()`方法将每个商品信息写入CSV文件。 #### 4.3.4 读取CSV文件 当我们需要处理或分析之前保存的CSV文件时,可以使用`csv.reader`或`csv.DictReader`来读取文件内容。 ```python import csv # 定义CSV文件名 filename = 'products.csv' # 使用DictReader读取CSV文件 with open(filename, mode='r', encoding='utf-8') as file: reader = csv.DictReader(file) # 遍历CSV文件中的每一行 for row in reader: print(row) # 打印整行数据,以字典形式展示 # 可以根据需要进行进一步处理,如访问特定字段 # print(row['name'], row['price']) ``` 在上述代码中,我们使用`with`语句以只读模式打开`products.csv`文件,并创建了一个`DictReader`对象来读取文件。通过遍历`reader`对象,我们可以逐行访问CSV文件中的数据,每行数据以字典的形式呈现,其中字典的键是字段名,值是对应的数据。 #### 4.3.5 注意事项与最佳实践 - **文件编码**:在读写CSV文件时,应明确指定文件的编码方式,如`utf-8`,以避免因编码不一致导致的乱码问题。 - **异常处理**:在文件操作中,应加入异常处理机制,如使用`try...except`语句块,以捕获并处理可能出现的错误,如文件不存在、权限不足等。 - **性能优化**:对于大规模数据的读写,应考虑使用更高效的数据处理库,如`pandas`,它提供了更为强大的数据处理功能,并优化了内存使用。 - **安全性**:在处理来自不可信源的数据时,应注意数据清洗和验证,以防止注入攻击等安全问题。 #### 4.3.6 小结 本章介绍了如何在Python中使用`csv`模块进行CSV文件的读写操作。通过`DictReader`和`DictWriter`类,我们可以以字典的形式方便地处理CSV文件中的数据,使得数据的读取和写入变得更加直观和灵活。在实际的网络爬虫开发过程中,合理利用CSV文件存储数据,可以大大提高数据处理的效率和便捷性。
上一篇:
4.2 JSON 文件存储
下一篇:
4.4 MySQL 存储
该分类下的相关小册推荐:
Python机器学习实战
Python合辑2-字符串常用方法
Python机器学习基础教程(上)
Python合辑10-函数
Python爬虫入门与实战开发(上)
Python自动化办公实战
Python与办公-玩转PPT
Python机器学习基础教程(下)
剑指Python(磨刀不误砍柴工)
Python合辑3-字符串用法深度总结
Python神经网络入门与实践
Python合辑1-Python语言基础