首页 > 其他分享 >网络爬虫——常用存储方式

网络爬虫——常用存储方式

时间:2024-11-21 13:14:31浏览次数:3  
标签:存储 data 数据库 Excel 爬虫 常用 CSV 数据

在网络爬虫中,根据爬取的数据类型和业务需求,可以选择多种存储方式。本节将详细讲解将数据存储为 CSV 和 Excel 文件SQLite 数据库MongoDB 等 NoSQL 数据库 的使用方法。


1. 存储为 CSV 和 Excel 文件

1.1 CSV 文件存储
1.1.1 什么是 CSV 文件?
  • CSV(Comma-Separated Values)是一种轻量级的表格数据格式,通常用于存储和传输结构化数据。
  • 文件格式简单,易于阅读和操作。
1.1.2 使用场景
  • 小型项目。
  • 数据需要以表格形式进行分析。
  • 便于与其他工具(如 Excel、数据分析软件)交互。
1.1.3 Python 存储为 CSV 文件
  • 利用 Python 的 csv 模块可以快速将数据存储为 CSV 文件。
  • 示例代码:
import csv

# 模拟爬取的数据
data = [
    {"id": 1, "name": "张三", "age": 28},
    {"id": 2, "name": "李四", "age": 30}
]

# 写入 CSV 文件
with open("data.csv", "w", encoding="utf-8", newline="") as csvfile:
    fieldnames = ["id", "name", "age"]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    # 写入表头
    writer.writeheader()

    # 写入数据
    writer.writerows(data)
1.1.4 优缺点
  • 优点
    • 格式简单,跨平台兼容性好。
    • 文件体积小。
  • 缺点
    • 不支持复杂数据结构(如嵌套 JSON)。
    • 适合小规模数据。

1.2 Excel 文件存储
1.2.1 什么是 Excel 文件?
  • Excel 是一种常用的电子表格格式,支持复杂的表格布局和数据格式。
  • 适用于结构化数据的存储与分析。
1.2.2 使用场景
  • 数据需要以可视化表格形式呈现。
  • 数据需要与 Excel 等办公软件共享。
1.2.3 Python 存储为 Excel 文件
  • 利用 openpyxl 库可以存储数据为 Excel 格式。
  • 示例代码:
from openpyxl import Workbook

# 模拟爬取的数据
data = [
    {"id": 1, "name": "张三", "age": 28},
    {"id": 2, "name": "李四", "age": 30}
]

# 创建 Excel 工作簿
workbook = Workbook()
sheet = workbook.active
sheet.title = "爬取数据"

# 写入表头
sheet.append(["ID", "姓名", "年龄"])

# 写入数据
for item in data:
    sheet.append([item["id"], item["name"], item["age"]])

# 保存为文件
workbook.save("data.xlsx")
1.2.4 优缺点
  • 优点
    • 支持复杂数据格式和样式。
    • 更适合以人为中心的数据分享和分析。
  • 缺点
    • 文件体积较大,存储效率低于 CSV。
    • 不适合大规模存储。

2. SQLite 数据库存储

2.1 什么是 SQLite?
  • SQLite 是一种轻量级的嵌入式数据库,无需单独的数据库服务。
  • 数据存储在单个文件中,非常便携。
2.2 使用场景
  • 小型项目。
  • 数据规模较小,查询复杂度较低。
  • 开发和测试环境。
2.3 Python 使用 SQLite 存储数据
  • 利用 sqlite3 库操作 SQLite 数据库。
  • 示例代码:
import sqlite3

# 连接到 SQLite 数据库(不存在时自动创建)
conn = sqlite3.connect("data.db")
cursor = conn.cursor()

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
)
""")

# 插入数据
data = [
    (1, "张三", 28),
    (2, "李四", 30)
]
cursor.executemany("INSERT INTO users (id, name, age) VALUES (?, ?, ?)", data)

# 提交事务并关闭连接
conn.commit()
conn.close()
2.4 优缺点
  • 优点
    • 易于设置和使用,无需额外安装。
    • 支持基本的 SQL 查询。
    • 单个文件存储,便于迁移。
  • 缺点
    • 不支持分布式和高并发。
    • 仅适用于小型应用。

3. MongoDB 等 NoSQL 数据库的使用

3.1 什么是 NoSQL 数据库?
  • NoSQL 数据库是一类非关系型数据库,通常用于处理非结构化和半结构化数据。
  • 常见 NoSQL 数据库:MongoDB、Redis、Cassandra。
3.2 使用场景
  • 数据结构灵活,模式不固定。
  • 数据量大且多样。
  • 高并发读写场景。
3.3 MongoDB 存储爬取数据
3.3.1 MongoDB 优势
  • 支持嵌套数据(如 JSON)。
  • 支持高效的分布式存储与扩展。
  • 天然适合文档型存储。
3.3.2 Python 操作 MongoDB
  • 利用 pymongo 库操作 MongoDB。
  • 示例代码:
from pymongo import MongoClient

# 连接到 MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client["web_crawler"]  # 数据库
collection = db["users"]   # 集合

# 插入数据
data = [
    {"id": 1, "name": "张三", "age": 28},
    {"id": 2, "name": "李四", "age": 30}
]
collection.insert_many(data)

# 查询数据
for user in collection.find():
    print(user)

# 关闭连接
client.close()
3.4 优缺点
  • 优点
    • 数据模型灵活,支持 JSON 文档直接存储。
    • 可扩展性强,适合大规模分布式系统。
  • 缺点
    • 学习曲线较高。
    • 性能依赖于硬件和网络环境。

4. 存储方式选择指南

存储方式优势劣势使用场景
CSV 文件简单、通用、易于分享不支持复杂数据结构小规模项目,数据结构简单
Excel 文件可视化效果好,便于共享文件体积较大,存储效率低小型项目,数据需分析或分享
SQLite轻量级,便携,无需安装服务不适合大规模数据或高并发小型应用或开发测试环境
MongoDB灵活、支持嵌套文档存储需额外安装服务,复杂度较高非结构化数据,大规模分布式存储

总结

爬取的数据需要根据具体需求选择合适的存储方式:小型项目可优先使用 CSV 或 SQLite,复杂项目或非结构化数据可选择 MongoDB 等 NoSQL 数据库。在实际开发中,灵活运用多种存储方式可以最大化数据管理的效率与便捷性。

 

标签:存储,data,数据库,Excel,爬虫,常用,CSV,数据
From: https://blog.csdn.net/u012263104/article/details/143928428

相关文章

  • 计算机毕业设计源码 python基于爬虫的毕业生兴趣与求职实时智能数据分析
    标题:python基于爬虫的毕业生兴趣与求职实时智能数据分析设计一个基于Python和爬虫技术的毕业生兴趣与求职实时智能数据分析系统,可以帮助高校、企业和毕业生更好地了解就业市场趋势、毕业生兴趣和求职需求,从而优化招聘策略和个人职业规划。以下是一个典型的数据分析系统的主......
  • 简述下html5的离线存储原理,同时说明如何使用?
    HTML5离线存储的核心原理是利用浏览器缓存机制,允许Web应用程序在用户离线时仍然可以访问和使用本地缓存的资源,从而提供更好的用户体验。主要涉及以下几个关键技术:1.Manifest文件:这是离线应用的核心,一个简单的文本文件,列出了需要缓存的资源。浏览器会根据manifest文件的内......
  • Java中常用的线程安全单例模式实现
    在Java中,实现线程安全的单例模式有多种方式。以下是几种常用的线程安全单例模式实现:1.饿汉式(线程安全,类加载时初始化)特点:简单且线程安全,但如果实例过于占用资源且程序可能不使用它,会造成内存浪费。publicclassSingleton{privatestaticfinalSingletonINSTANCE......
  • Dockerfile 常用指令与编写技巧
    目录Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义镜像。Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。Docker分为四部分:基础镜像信息维护者信息镜像操作指令容器启动时默认要执行的指令例如:#第一行必须指定......
  • Redis:配置与常用命令
    1,Redis简介Remotedictionaryserver是一个开源的基于内存的数据存储系统,它可以用作数据库缓存和消息队列等各种场景,它也是目前最热门nosql数据库之一2,Redis接受的数据类型字符串String消息队列Stream列表List地理空间Geospatial集合SetHyperLogLog有序集合SortedSet......
  • 推荐几款适合跨境电商&外贸的爬虫软件
    在当今数据驱动的时代,自动化爬虫工具和软件成为了许多企业和个人获取数据的重要手段,特别是跨境电商、外贸等业务,对数据的需求非常大,比如对amazon、tiktok、shopee等网站数据的监测和获取。这里会介绍6款功能强大、操作简便的自动化爬虫工具,用好了可以更高效地进行数据采集,非常......
  • C语言常用语句总结
    一:常用函数1、putchar函数:putchar函数(字符输出函数):向终端输出一个字符。一般形式为:        putchar(c)  //   输出字符变量c的值。        ==    printf(“%c”,c)2、getchar函数getchar函数(字符输入函数):从终端输入一个字符。getchar函数没......
  • PyCharm常用快捷键和设置
    Ctrl+Space   基本的代码完成(类、方法、属性)Ctrl+Alt+Space 快速导入任意类Ctrl+Shift+Enter   语句完成Ctrl+P   参数信息(在方法中调用参数)Ctrl+Q   快速查看文档F1  外部文档Shift+F1   外部文档,进入web文档主页Ctrl+Shift+......
  • 常用软件下载地址
    VMwareworkstationproIDMTypora官方中文站PhpStudyJetbrains......
  • conda常用命令
    镜像condaconfig--show#查看conda的环境配置condaconfig--getchannels#查询当前配置中包含哪些channelscondaconfig--showchannels#查询当前配置中包含哪些channelscondaconfig......