首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:网络爬虫概述与Python基础
第二章:Python网络编程基础
第三章:Python HTTP库的使用
第四章:Python数据存储与文件操作
第五章:Python正则表达式与字符串处理
第六章:Python异常处理与日志记录
第七章:Python多线程与多进程编程
第八章:Python环境搭建与开发工具
第九章:Python爬虫框架的选择与比较
第十章:爬虫的基本原理与技术路线
第十一章:实战一:使用Python基础库编写简单的爬虫
第十二章:实战二:使用Requests库进行网络请求
第十三章:实战三:使用BeautifulSoup解析HTML
第十四章:实战四:使用Scrapy框架进行爬虫开发
第十五章:实战五:使用Selenium模拟浏览器操作
第十六章:实战六:使用Scrapy异步爬虫
第十七章:实战七:使用Scrapy分布式爬虫
第十八章:实战八:使用Scrapy爬虫处理动态网页
第十九章:实战九:使用Scrapy爬虫处理登录验证
第二十章:实战十:使用Scrapy爬虫处理反爬机制
第二十一章:高级技巧一:Python爬虫的性能优化
第二十二章:高级技巧二:Python爬虫的缓存与持久化
第二十三章:高级技巧三:Python爬虫的数据处理与分析
第二十四章:高级技巧四:Python爬虫的并发控制
第二十五章:高级技巧五:Python爬虫的分布式爬虫架构
第二十六章:高级技巧六:Python爬虫的安全性与合规性
第二十七章:高级技巧七:Python爬虫的自动化测试
第二十八章:高级技巧八:Python爬虫的监控与报警
第二十九章:高级技巧九:Python爬虫的异常处理与恢复
第三十章:高级技巧十:Python爬虫的高级特性与技巧
第三十一章:案例分析一:电商平台商品爬取实战
第三十二章:案例分析二:社交媒体数据爬取实战
第三十三章:案例分析三:新闻网站内容爬取实战
第三十四章:案例分析四:科学文献爬取实战
第三十五章:案例分析五:地图数据爬取实战
第三十六章:案例分析六:企业数据爬取实战
第三十七章:案例分析七:招聘网站信息爬取实战
第三十八章:案例分析八:电商网站价格监控实战
第三十九章:案例分析九:旅游网站景点信息爬取实战
第四十章:案例分析十:教育网站资源爬取实战
第四十一章:扩展阅读一:Python爬虫的经典书籍与资源
第四十二章:扩展阅读二:Python爬虫框架比较与选择
第四十三章:扩展阅读三:Python爬虫的最佳实践
第四十四章:扩展阅读四:Python爬虫的安全策略与合规性
第四十五章:扩展阅读五:Python爬虫的性能测试与调优
第四十六章:扩展阅读六:Python爬虫的自动化测试与验证
第四十七章:扩展阅读七:Python爬虫的代码审查与质量控制
第四十八章:扩展阅读八:Python爬虫的持续集成与持续部署
第四十九章:扩展阅读九:Python爬虫开源项目与工具推荐
第五十章:扩展阅读十:从高级程序员到网络爬虫专家之路
第五十一章:高级技巧十一:Python爬虫中的爬虫策略
第五十二章:高级技巧十二:Python爬虫中的数据提取技巧
当前位置:
首页>>
技术小册>>
实战Python网络爬虫
小册名称:实战Python网络爬虫
### 第四章:Python数据存储与文件操作 在网络爬虫项目中,数据的存储与文件操作是不可或缺的一环。有效地管理和处理爬取到的数据,不仅有助于后续的数据分析,还能提升整个项目的可维护性和可扩展性。本章将深入探讨Python中数据存储与文件操作的基本方法,包括文本文件的读写、JSON与CSV格式数据的处理、以及使用数据库进行数据存储等。 #### 4.1 引言 在网络爬虫项目中,爬虫脚本负责从互联网上抓取数据,而数据存储与文件操作则负责将这些数据以适当的形式保存下来,供后续使用。Python作为一门功能强大的编程语言,提供了丰富的库来支持各种数据存储和文件操作需求,包括但不限于内置的文件操作函数、标准库中的`json`、`csv`模块,以及第三方库如`pandas`、`SQLite`、`MySQLdb`(针对MySQL)等。 #### 4.2 文本文件的读写 ##### 4.2.1 打开文件 在Python中,使用内置的`open()`函数可以打开文件。该函数接受文件路径(可以是绝对路径或相对路径)和模式(如读'r'、写'w'、追加'a'等)作为参数,并返回一个文件对象。 ```python # 打开文件以读取 with open('example.txt', 'r') as file: content = file.read() print(content) # 打开文件以写入,如果文件不存在则创建 with open('new_example.txt', 'w') as file: file.write('Hello, Python!') ``` 使用`with`语句可以确保文件在使用后正确关闭,即使在读写文件时发生异常也是如此。 ##### 4.2.2 读取与写入 文件打开后,可以使用`read()`, `readline()`, `readlines()`等方法读取文件内容,使用`write()`, `writelines()`等方法写入内容。 ```python # 读取一行 with open('example.txt', 'r') as file: line = file.readline() print(line.strip()) # strip() 去除行尾的换行符 # 写入多行 with open('multiple_lines.txt', 'w') as file: lines = ['First line.\n', 'Second line.\n', 'Third line.'] file.writelines(lines) ``` #### 4.3 JSON格式数据的处理 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python的`json`模块提供了对JSON数据的编码和解码功能。 ##### 4.3.1 JSON编码(Python对象到JSON字符串) ```python import json data = { 'name': 'John Doe', 'age': 30, 'is_student': False, 'courses': ['Math', 'Science'] } json_str = json.dumps(data, indent=4) # indent用于美化输出 print(json_str) # 写入文件 with open('data.json', 'w') as file: json.dump(data, file, indent=4) ``` ##### 4.3.2 JSON解码(JSON字符串到Python对象) ```python with open('data.json', 'r') as file: data = json.load(file) print(data) print(type(data)) # 输出: <class 'dict'> ``` #### 4.4 CSV格式数据的处理 CSV(Comma-Separated Values)是一种用逗号分隔的文本文件格式,常用于存储表格数据。Python的`csv`模块提供了读取和写入CSV文件的功能。 ##### 4.4.1 写入CSV文件 ```python import csv rows = [ ['Name', 'Age', 'City'], ['Alice', 24, 'New York'], ['Bob', 19, 'Los Angeles'] ] with open('people.csv', 'w', newline='') as file: # newline='' 防止在Windows上写入额外空行 writer = csv.writer(file) writer.writerows(rows) ``` ##### 4.4.2 读取CSV文件 ```python with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) ``` #### 4.5 数据库存储 对于大量数据或需要频繁查询、更新的场景,使用数据库进行数据存储更为合适。Python提供了多种数据库操作的方式,包括SQLite这样的轻量级数据库和通过第三方库支持的其他关系型数据库(如MySQL、PostgreSQL)及NoSQL数据库(如MongoDB)。 ##### 4.5.1 SQLite数据库操作 SQLite是一个轻量级的数据库,不需要配置服务器即可使用,非常适合小型项目或原型开发。Python的`sqlite3`模块提供了对SQLite数据库的支持。 ```python import sqlite3 # 连接到SQLite数据库 # 如果文件不存在,会自动在当前目录创建 conn = sqlite3.connect('example.db') c = conn.cursor() # 创建表 c.execute('''CREATE TABLE IF NOT EXISTS stocks (date text, trans text, symbol text, qty real, price real)''') # 插入一行数据 c.execute("INSERT INTO stocks VALUES ('2023-04-01','BUY','RHAT',100,35.14)") # 提交事务 conn.commit() # 查询数据 c.execute('SELECT * FROM stocks WHERE symbol=?', ('RHAT',)) print(c.fetchone()) # 关闭连接 conn.close() ``` ##### 4.5.2 使用Pandas处理数据并存储到数据库 `pandas`是一个强大的数据处理库,它不仅支持CSV、Excel等文件的读写,还能与数据库交互,将DataFrame直接存储到数据库中。 ```python import pandas as pd from sqlalchemy import create_engine # 假设df是一个已经存在的DataFrame # 连接到SQLite数据库 engine = create_engine('sqlite:///mydatabase.db') # 将DataFrame存储到数据库中 df.to_sql('my_table', con=engine, if_exists='replace', index=False) ``` #### 4.6 总结 本章介绍了Python中数据存储与文件操作的基本方法,包括文本文件的读写、JSON与CSV格式数据的处理,以及使用SQLite数据库进行数据存储。这些技能对于网络爬虫项目至关重要,因为它们直接影响到数据的收集、整理和分析效率。掌握这些技能后,你将能够更有效地管理和利用爬虫抓取的数据,为后续的数据分析和可视化工作打下坚实的基础。
上一篇:
第三章:Python HTTP库的使用
下一篇:
第五章:Python正则表达式与字符串处理
该分类下的相关小册推荐:
Python编程轻松进阶(一)
Python面试指南
Python机器学习基础教程(上)
Python编程轻松进阶(四)
Python3网络爬虫开发实战(下)
Python神经网络入门与实践
Python合辑1-Python语言基础
Python机器学习实战
Python编程轻松进阶(五)
Python合辑14-面向对象编程案例(下)
Python合辑4-130个字符串操作示例
Python与办公-玩转PDF