当前位置: 首页 > 后端技术 > Python

Python3网络爬虫开发实战读书笔记---第5章数据存储

时间:2023-03-26 12:37:09 Python

本系列文章是我在阅读《Python3网络爬虫开发实战》等网络资料学习爬虫过程中的一些笔记和心得。希望与大家分享。章节概述:本章介绍数据解析后的数据存储章节结构:文件存储关系数据库存储非关系数据库存储具体内容:文件存储TXT文本:请求获取内容---pyquery解析---提取内容并将其保存到文档中(open、file.write等)JSON文本:JavaScriptObjectNotationJS对象表示法。Python可以使用json库读写JSON,通过loads方法将JSON文本字符串转换为JSON对象(注意key和value要用双引号括起来)。JSON对象可以通过dumps方法转换为文本字符串。CSV文本:Comma-SeparatedValuesComma-SeparatedValues/Character-SeparatedValues。以纯文本形式存储数据,字段分隔符是其他字符或字符串,例如字符或制表符。Python有csv库支持读写。通过创建一个writer对象,调用writerow方法。或者一个DictWriter对象,调用writeheader和writerow。通读读者对象。关系数据库存储关系数据库基于关系模型。按二维表保存。它的存储方式是由行和列组成的表,每一列是一个字段,每一行是一条记录。可以将表视为实体的集合。示例:MySQL、Oracle、SQLServer。PyMySQL库主要用于Python。首先通过pymysql对象调用connect方法连接数据库,通过游标创建执行对象,通过exect(SQL语句)启动查询或建表等数据库操作,得到一条数据通过fetchone获取或者所有结果都通过fetchall获取。SQL语句中的变量可以用%格式符代替,然后exect调用(SQL语句,(变量值))最后通过commit将刚才的语句传入数据库进行操作。如果发生异常,可以使用回滚。这里涉及的操作满足ACID特性,即:原子性:事务是一个不可分割的工作单元,事务中包含的操作要么执行,要么不执行。一致性:事务必须将数据从一种一致状态更改为另一种状态。隔离性:一个事务的执行不能受到其他事务的干扰,相互隔离。持久性:事务一旦提交,它对数据库数据的更改是永久性的。非关系数据库存储NoSQL(NotonlySQL)键值存储数据库:Redis、Voldemort、OracleBDB列存储数据库:Cassandra、HBase、Riak文档数据库:CouchDB、MongoDB图数据库:Neo4J、InfoGrid、InfiniteGraph等使用非关系型数据库存储爬虫爬取的结果,避免部分字段提取失败,以及必须提前建立表或数据嵌套关系的情况。Python使用MongoDB----pymongo库创建一个MongoClien对象,通过mongoclient.db_name/mongoclient['db_name']指定操作数据库,然后使用指定的数据库db.collections_name/db['collections_name']指定集合,并通过collections调用insert,insert_one,insert_many,find_one,find,sort,update,remove,delete_one和比较符号,函数符号配合执行数据库插入查询等操作比较符号函数符号Python使用Redis----redis-py库通过Redis和StrictRedis类实现了对Redis数据库的操作。这个库的操作函数比较复杂,建议阅读官网学习。