浅学爬虫-数据存储

在数据爬取完成后,我们需要将数据存储起来,以便于后续的分析和处理。常见的数据存储方式包括存储到CSV文件和存储到数据库。下面我们详细介绍如何实现这些存储方式。

存储到CSV

CSV(Comma-Separated Values)文件是一种常用的文本文件格式,用于存储表格数据。我们可以使用Python的内置csv模块将爬取的数据保存到CSV文件中。

示例:将数据存储到CSV文件

假设我们已经爬取了一些数据,数据结构如下:

python 复制代码
data = [
    {'title': '标题1', 'description': '描述1'},
    {'title': '标题2', 'description': '描述2'},
    {'title': '标题3', 'description': '描述3'}
]

步骤1:编写存储到CSV文件的代码

python 复制代码
import csv

# 数据列表
data = [
    {'title': '标题1', 'description': '描述1'},
    {'title': '标题2', 'description': '描述2'},
    {'title': '标题3', 'description': '描述3'}
]

# CSV文件名
csv_file = 'data.csv'

# 写入数据到CSV文件
with open(csv_file, 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['title', 'description']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for row in data:
        writer.writerow(row)

print(f"数据已保存到 {csv_file}")

代码解释:

  1. 数据结构: 定义一个包含字典列表的数据结构。
  2. CSV文件名: 定义要保存的CSV文件名。
  3. 写入数据 : 使用csv.DictWriter创建一个CSV写入对象,写入数据到CSV文件中。

扩展内容:

  • 追加写入模式 : 如果希望将新数据追加到现有CSV文件中,可以使用追加模式('a')打开文件。
python 复制代码
with open(csv_file, 'a', newline='', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    for row in data:
        writer.writerow(row)
  • 读取CSV文件 : 可以使用csv.DictReader读取CSV文件中的数据。
python 复制代码
with open(csv_file, 'r', encoding='utf-8') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)
存储到数据库

数据库是一种高效的数据存储和管理方式。我们可以将数据存储到SQLite或其他关系数据库中。这里我们以SQLite为例,介绍如何将数据存储到数据库中。

示例:将数据存储到SQLite数据库

步骤1:安装SQLite支持库

SQLite是Python内置支持的,所以不需要额外安装。如果使用其他数据库,如MySQL或PostgreSQL,需要安装相应的库。

步骤2:编写存储到SQLite数据库的代码

python 复制代码
import sqlite3

# 数据列表
data = [
    {'title': '标题1', 'description': '描述1'},
    {'title': '标题2', 'description': '描述2'},
    {'title': '标题3', 'description': '描述3'}
]

# 创建数据库连接
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 创建表
cursor.execute('''
    CREATE TABLE IF NOT EXISTS data (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT NOT NULL,
        description TEXT NOT NULL
    )
''')

# 插入数据
for row in data:
    cursor.execute('''
        INSERT INTO data (title, description)
        VALUES (?, ?)
    ''', (row['title'], row['description']))

# 提交事务并关闭连接
conn.commit()
conn.close()

print("数据已保存到 SQLite 数据库")

代码解释:

  1. 创建数据库连接 : 使用sqlite3.connect创建一个数据库连接。
  2. 创建表 : 使用cursor.execute创建一个数据表。
  3. 插入数据 : 使用cursor.execute将数据插入到数据库表中。
  4. 提交事务并关闭连接 : 使用conn.commit提交事务,使用conn.close关闭数据库连接。

扩展内容:

  • 查询数据 : 可以使用SELECT语句从数据库中查询数据。
python 复制代码
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

cursor.execute('SELECT * FROM data')
rows = cursor.fetchall()
for row in rows:
    print(row)

conn.close()
  • 更新数据 : 可以使用UPDATE语句更新数据库中的数据。
python 复制代码
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

cursor.execute('''
    UPDATE data
    SET description = '新的描述'
    WHERE title = '标题1'
''')

conn.commit()
conn.close()
  • 删除数据 : 可以使用DELETE语句删除数据库中的数据。
python 复制代码
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

cursor.execute('''
    DELETE FROM data
    WHERE title = '标题3'
''')

conn.commit()
conn.close()
结论

本文详细介绍了如何将爬取的数据存储到CSV文件和SQLite数据库中。这些方法将帮助我们更好地管理和分析数据。CSV文件适合于存储结构简单且不需要频繁更新的数据,而数据库则适用于需要高效查询和管理的大规模数据。在下一篇文章中,我们将探讨更多数据存储和处理的高级技术

相关推荐
wWYy.14 小时前
详解redis(7):数据结构List
数据库·redis·缓存
喵手14 小时前
Python爬虫零基础入门【第六章:增量、去重、断点续爬·第3节】幂等去重:同一条数据反复跑也不会重复入库!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·增量、去重、断点续爬·幂等去重
深蓝电商API14 小时前
Selenium多窗口切换与Cookie管理
爬虫·python·selenium·测试工具
砚边数影14 小时前
时序数据库国产化替代,破局迁移“三不”困局
数据库·时序数据库·kingbase·kingbasees·金仓数据库
专注于大数据技术栈14 小时前
Redis 中 USED 和 RSS
数据库·redis·缓存
2501_9458374314 小时前
事件驱动无服务器,Knative重塑云服务器原子化运算形态
服务器
有味道的男人14 小时前
如何使用招标网API获取项目详情?
java·服务器·前端
qq_4061761414 小时前
深入剖析JS中的XSS与CSRF漏洞:原理、攻击与防御全指南
服务器·开发语言·前端·javascript
一个响当当的名号14 小时前
lectrue8 表索引
数据库
2501_9458374314 小时前
DPU全栈卸载,NVIDIA BlueField-3释放云服务器核心算力
服务器