爬虫教程---第四章 信息存储

第四章 信息存储

前面三章介绍了如何爬取以及筛选信息,而这些信息呢都是输出到控制台的。那这一章,我们要学习如何将这些信息持久化存储,方便我们以后的使用。

接下来我们要学习的信息存储技术有:jsoncsvmysql

大家可以根据需要来选择信息存储方式。

4.1 JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。与python的字典很像,用法也差不多。

JSON 的数据类型:

  • 对象:使用花括号包裹 {} 起来的内容。如:{key:value} value可以是任何类型的数据
  • 列表:方括号 [] 包裹起来的内容。如:[1,"python",{key:value}]
  • 字符串:双引号包裹起来的内容。如:"python"

tips:JSON本质是一个字符串


dumps 跟 dump

# 第一步 导入json
import json

books = [
    {
        id: 1,
        name: '三国演义',
        price: ''
    },
    {
        id: 2,
        name: '水浒传',
        price: ''
    },
    {
        id: 3,
        name: '红楼梦',
        price: ''
     }
]
# 使用dumps 将python对象转化成json
text = json.dumps(books)
print(text, '---', type(text))

# 使用dump 将python对象自动转化成json后存入文件
with open('book.json', 'w', encoding='utf-8') as fp:
    json.dump(books, fp, ensure_ascii=False)

tipsdump 默认使用的编码格式是ascii ,在存储中文数据时,需要将其关闭,方式为ensure_ascii=False,另外还需要在打开文件的时候指定编码,如encoding='utf-8'

loads 跟 load

import json

text = '{"book":"python"}'
# 使用loads 将json字符串转化成python对象
book = json.loads(text)

# 使用load 读取json文件并自动转化成python对象
with open('book.json', 'r', encoding='utf-8') as fp:
    book = json.load(fp)

小结:

  • 将python对象转化成json 的方式 dumpsdump (写入文件)
  • json 转化成python对象的方式 loadsload (从读取中读取)

4.2 CSV

CSV又叫逗号分隔值,因为在大部分CSV的表中每个字段都以, 作为分隔符。跟Excel 类似

详情可自行百度。


读取CSV文件:

import csv

with open('books.csv', 'r') as fp:
    # reader是一个迭代器,存储的是一个个列表
    reader = csv.reader(fp)
    for x in reader:
        # x为列表
        print(x)  # 每次都打印一行数据
        
with open('books.csv', 'r') as fp:
    # reader是一个迭代器,存储的是一个个字典
    reader = csv.DictReader(fp)
    for x in reader:
        # x为字典
        print(x)  # 每次都打印一行数据

写入CSV文件:

import csv

headers = {'name','age'}
values = [
    ('张三', 18), ('李四', 20)
]

# newline='' 每写入一行都不进行换行
with open('person.csv', 'w', encoding='utf-8', newline='') as fp:
    writer = csv.writer(fp)
    # 写入头部
    writer.writerow(headers)
    # 写入内容 一次性写入全部内容
    writer.writerows(values)

# 以字典写入
headers = {'name','age'}
values = [
    {'name':'张三', 'age':'18'},
    {'name':'李四', 'age':'20'},
]   
with open('person.csv', 'w', encoding='utf-8') as fp:
    writer = csv.DictWriter(fp, headers)
    # 写入头部
    writer.writeheader()
    # 写入内容 一次性写入全部内容
    writer.writerows(values)

4.3 Mysql

mysql 的安装及使用教程在我的另一篇博客 Mysql学习(全) 写的蛮详细的,这里就只介绍在python中如何通过代码来连接mysql

python 可使用pymysql 来连接本地的mysql

首先,需要先安装pymysqlpip install pymysql

简单查询:

# 第一步 导入pymysql
import pymysql

# 第二步 建立连接
conn = pymysql.connect(
	host='localhost',  # 主机
    user='root',  # 用户名
    password='xxx',  # 密码
    database='test',  # 要连接的数据库
    post=3306  # mysql的端口号,一般为3306
)

# 创建游标
cursor = conn.cursor()
# 定义sql语句
sql = 'select * from user'
# 查询数据
cursor.execute(sql)
# 获取查询内容
result = cursor.fetchone()
print(result)

# 关闭连接
conn.close()

tips

  • fetchone():每次获取一条数据。
  • fetchall():获取全部返回结果。
  • fecthmany(size):每次获取size条数据。

增删改:

import pymysql

# 建立连接
conn = pymysql.connect(
	host='localhost',  # 主机
    user='root',  # 用户名
    password='xxx',  # 密码
    database='test',  # 要连接的数据库
    post=3306  # mysql的端口号,一般为3306
)

cursor = conn.cursor()
# 即使表中的字段是整形或其他类型 都要写成%s格式
sql = "insert into user values(%s,%s)"

# 填好参数
cursor.execute(sql,('杭', 18))
# 提交
conn.commit()

# 关闭连接
conn.close()

tips:

  • 连接对象负责创建游标跟提交事务,游标对象负责执行sql语句跟获取查询结果。
  • 增删改操作都需要commit()

这一章相对来说比较简单,小伙伴可以结合之前学到的知识来练习爬虫,平时我们使用最多的是使用数据库来进行持久化存储。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值