爬虫程序如何存储数据到数据库?

ops/2025/1/17 2:30:05/

将爬虫程序中获取的数据存储到数据库是一个常见的需求,这不仅可以方便地管理和查询数据,还可以为后续的数据分析和应用提供支持。以下是一个详细的步骤指南,介绍如何将爬虫程序中获取的数据存储到数据库中,以 MySQL 为例。

一、准备工作

  1. 安装 MySQL:确保你的系统中已经安装了 MySQL 数据库。如果未安装,可以从 MySQL 官网下载并安装。

  2. 创建数据库和表:在 MySQL 中创建一个数据库和表,用于存储爬取的数据。例如,创建一个名为 ecommerce数据库和一个名为 product_comments 的表。

    CREATE DATABASE ecommerce;
    USE ecommerce;CREATE TABLE product_comments (id INT AUTO_INCREMENT PRIMARY KEY,product_id VARCHAR(255) NOT NULL,content TEXT,nickname VARCHAR(255),time DATETIME
    );

    3.添加 MySQL 驱动依赖:在你的 Maven 项目中,添加 MySQL 驱动依赖,以便 Java 程序能够连接到 MySQL 数据库

    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
    </dependency>

二、编写数据存储代码

  1. 加载数据库驱动:在 Java 程序中加载 MySQL 驱动。

    Class.forName("com.mysql.cj.jdbc.Driver");

    2.建立数据库连接:使用 JDBC 连接到 MySQL 数据库

    String url = "jdbc:mysql://localhost:3306/ecommerce?useSSL=false&serverTimezone=UTC";
    String username = "root";
    String password = "your_password";
    Connection connection = DriverManager.getConnection(url, username, password);

    3.插入数据:编写 SQL 插入语句,将爬取到的数据插入到 product_comments 表中。

    public void saveComments(List<Map<String, String>> comments, String productId) {String sql = "INSERT INTO product_comments (product_id, content, nickname, time) VALUES (?, ?, ?, ?)";try (Connection connection = DriverManager.getConnection(url, username, password);PreparedStatement statement = connection.prepareStatement(sql)) {for (Map<String, String> comment : comments) {statement.setString(1, productId);statement.setString(2, comment.get("content"));statement.setString(3, comment.get("nickname"));statement.setString(4, comment.get("time"));statement.addBatch();}statement.executeBatch();} catch (SQLException e) {e.printStackTrace();}
    }

三、完整示例

以下是一个完整的示例,展示如何将爬取到的 1688 商品评论数据存储到 MySQL 数据库中。

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class CommentCrawler {private static final String url = "jdbc:mysql://localhost:3306/ecommerce?useSSL=false&serverTimezone=UTC";private static final String username = "root";private static final String password = "your_password";public static void main(String[] args) {try {Class.forName("com.mysql.cj.jdbc.Driver");List<Map<String, String>> comments = crawlProductComments("商品ID");saveComments(comments, "商品ID");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public static List<Map<String, String>> crawlProductComments(String productId) {List<Map<String, String>> comments = new ArrayList<>();// 爬虫逻辑,假设已经爬取到评论数据Map<String, String> comment1 = new HashMap<>();comment1.put("content", "商品质量很好,非常满意!");comment1.put("nickname", "用户1");comment1.put("time", "2025-01-13 10:00:00");comments.add(comment1);Map<String, String> comment2 = new HashMap<>();comment2.put("content", "物流速度很快,赞一个!");comment2.put("nickname", "用户2");comment2.put("time", "2025-01-12 15:30:00");comments.add(comment2);return comments;}public static void saveComments(List<Map<String, String>> comments, String productId) {String sql = "INSERT INTO product_comments (product_id, content, nickname, time) VALUES (?, ?, ?, ?)";try (Connection connection = DriverManager.getConnection(url, username, password);PreparedStatement statement = connection.prepareStatement(sql)) {for (Map<String, String> comment : comments) {statement.setString(1, productId);statement.setString(2, comment.get("content"));statement.setString(3, comment.get("nickname"));statement.setString(4, comment.get("time"));statement.addBatch();}statement.executeBatch();} catch (SQLException e) {e.printStackTrace();}}
}

四、注意事项

  1. 异常处理:在实际应用中,需要添加详细的异常处理逻辑,确保程序的健壮性。
  2. 连接管理:合理管理数据库连接,避免资源泄漏。使用 try-with-resources 语句可以自动关闭资源。
  3. 性能优化:对于大量数据的插入,可以使用批量插入(addBatch 和 executeBatch)来提高性能。
  4. 安全性:确保数据库连接信息的安全,避免在代码中硬编码用户名和密码。可以使用环境变量或配置文件来管理敏感信息。

通过以上步骤,你可以将爬虫程序中获取的数据存储到 MySQL 数据库中,为后续的数据分析和应用提供支持。希望这个示例对你有所帮助!如果有任何问题或建议,欢迎随时交流。


http://www.ppmy.cn/ops/150695.html

相关文章

YOLOv10-1.1部分代码阅读笔记-downloads.py

downloads.py ultralytics\utils\downloads.py 目录 downloads.py 1.所需的库和模块 2.def is_url(url, checkFalse): 3.def delete_dsstore(path, files_to_delete(".DS_Store", "__MACOSX")): 4.def zip_directory(directory, compressTrue, ex…

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;

主流消息队列(MQ)对比分析

主流消息队列(MQ)对比分析 1. RabbitMQ 1.1 简介 RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;用来通过普通协议在完全不同的应用之间共享数据。 1.2 主要特点 可靠性&#xff1a;提供了多种机制来保证可靠性&#xff0c;如持久化、确认机制、高可用性灵活的路由…

SQLAlchemy

目录 https://docs.sqlalchemy.org.cn/en/20/orm/quickstart.htmlhttps://docs.sqlalchemy.org.cn/en/20/orm/quickstart.html 声明模型 SQLAlchemy 2.0 安装 连接数据库 ​编辑 映射类 ​编辑 查询 修改记录 一对多的映射 多对多的映射 一对一的映射 https://docs.sqlal…

什么是数据仓库?

什么是数据仓库&#xff1f; 数据仓库&#xff08;Data Warehouse&#xff0c;简称DW&#xff09;是一种面向分析和决策的数据存储系统&#xff0c;它将企业中分散的、异构的数据按照一定的主题和模型进行集成和存储&#xff0c;为数据分析、报表生成以及商业智能&#xff08;…

宜自动化处理的五件事

自动化技术宛如一把神奇的钥匙&#xff0c;能够开启便捷之门&#xff0c;解锁诸多潜能。以下详细阐述适宜采用自动化处理的五件事&#xff0c;助力各方在各自领域快人一步。 一、数据录入与整理 无论是企业的财务报表、销售数据&#xff0c;还是科研机构的实验记录&#xff0…

通义文生视频模型升级,天工推理模型正式上线,微软开源小模型Phi-4!AI Weekly『1月6-1月12日』

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【Go】Go Gin框架初识(一)

1. 什么是Gin框架 Gin框架&#xff1a;是一个由 Golang 语言开发的 web 框架&#xff0c;能够极大提高开发 web 应用的效率&#xff01; 1.1 什么是web框架 web框架体系图&#xff08;前后端不分离&#xff09;如下图所示&#xff1a; 从上图中我们可以发现一个Web框架最重要…