『scrapy爬虫』05. 使用管道将数据写入mysql(详细注释步骤)

目录

    • 1. 新建管道类,并启用
    • 2. 准备好mysql数据库新建表
    • 3. 实现管道写入数据库的代码
      • 测试一下
    • 总结


欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中

如果对mysql和+python不熟悉可看专栏【Python之pymysql库学习】

1. 新建管道类,并启用

在 Scrapy 中,Item Pipeline 中的方法执行顺序一般会按照以下步骤进行:

  • open_spider:在 Spider 开始爬取时调用,用于初始化操作。
  • from_crawler:在创建 Pipeline 实例时调用,可以获取 Crawler 对象中的配置信息。
  • process_item:处理爬取到的 item 数据的主要方法,会在 Spider 返回 item 数据后被调用。
  • process_spider_input:处理来自 Spider 的输入数据。
  • process_spider_output:处理 Spider 输出的数据。
  • process_spider_exception:处理 Spider 抛出的异常。
  • get_media_requests:从 item 中提取需要下载的媒体文件的 Request 对象。
  • close_spider:在 Spider 结束爬取时调用,用于清理操作。
    这些方法的执行顺序并不是严格固定的,但通常遵循上述顺序。你可以根据自己的需求选择性地实现这些方法来对爬取到的数据进行处理和操作。

pipelines.py新增标准的模板,以后写新的管道直接cv这个模板

#用于将数据存入mysql的类
class DBPipeline:
    # 初始化
    def __init__(self):
        pass
    # 开始爬虫时候要进行的操作
    def open_spider(self, spider):
        pass
    # 处理爬取到的数据并进行后续处理
    def process_item(self, item, spider):
        pass
    # 关闭爬虫时候要进行的操作
    def close_spider(self, spider):
        pass

setting.py新增

# 配置数据管道
ITEM_PIPELINES = {
    'myscrapy.pipelines.DBPipeline': 200, #数据库管道
    'myscrapy.pipelines.MyscrapyPipeline': 300, #数字越小先执行,后期可以有多个管道
    # '你的项目名.pipelines.刚刚管道的类名': 权重, #权重越小先执行,后期可以有多个管道
}

2. 准备好mysql数据库新建表

数据库mzh_scrapy,数据表tb_top_movie
建表代码,注意是反引号不是单引号

USE mzh_scrapy;

DROP TABLE IF EXISTS tb_top_movie;

CREATE TABLE tb_top_movie (
    `mov_id` INT UNSIGNED AUTO_INCREMENT COMMENT '编号',
    `title` VARCHAR(50) NOT NULL COMMENT '标题',
    `score` DECIMAL(3,1) NOT NULL COMMENT '评分',
    `quato` VARCHAR(200) DEFAULT '' COMMENT '评价',
    PRIMARY KEY (`mov_id`)
) ENGINE=InnoDB COMMENT='top电影表';

3. 实现管道写入数据库的代码

安装库

pip install pymysql

有一个经典问题,什么时候提交数据到数据库,有两种写法,大家自行取舍self.cursor.commit()写在什么位置.

import openpyxl
import pymysql
#用于将数据存入mysql的类
class DBPipeline:
    # 初始化
    def __init__(self):
        self.conn=pymysql.connect(host='127.0.0.1',port=3306,
                                  user='root',passwd='123456',database='mzh_scrapy',charset='utf8mb4')
        self.cursor=self.conn.cursor()

    # 开始爬虫时候要进行的操作
    def open_spider(self, spider):
        pass

    # 处理爬取到的数据并进行后续处理
    def process_item(self, item, spider):
        title=item.get('title',"")#如果没有获取到标题,默认空
        score=item.get('score',0)#如果没有获取到评分,默认0
        quato=item.get('quato',"")#如果没有获取到评价默认空
        self.cursor.execute(
            'insert into tb_top_movie(title,score,quato) values (%s,%s,%s)',
            (title,score,quato)
        )#把数据存入缓冲区
        # self.conn.commit()#把数据缓冲区的数据提交到数据库,如果写在这里就是一行数据一行数据的提交
        # 一行一行提交对于整体效率来说变低了,但是数据安全一点
        return item #为什么是return? 我们要让这个管道先,return会把item数据传递给下一个管道用于保存excel的

    # 关闭爬虫时候要进行的操作
    def close_spider(self, spider):
        self.conn.commit()
        #把数据缓冲区的数据提交到数据库,把之前所有数据缓冲区的数据一次性提交
        #一次性提交如果系统性能高有利于提高性能,但有数据丢失的风险
        self.conn.close()

测试一下

Scrapy crawl douban

这里的我的编号是500-750主要是因为我们这个数据是最后一次性存入的,我不小心运行了多次`````相同的数据在mysql中又覆盖掉了,但是编号自动编号会增加.
在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2024 mzh

Crated:2024-3-1

欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中
『未完待续』


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461980.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记------常用API(四)

BigDecima 用于小数的精准计算 用来表示很大的小数 构造方法获取BigDecimal对象 public BigDecimal(double val)//有可能不精确,不建议使用 public BigDecimal(String val) 静态方法获取BigDecimal对象 public static BigDecimal valueOf(double val)//超出do…

布隆过滤器原理及应用场景

目录 一、布隆过滤器概述1.1 什么是布隆过滤器1.2 优缺点 二、布隆过滤器原理2.1 布隆过滤器的组成2.2 元素添加和查询 三、 应用场景参考资料 一、布隆过滤器概述 1.1 什么是布隆过滤器 布隆过滤器(Bloom Filter)是一种数据结构,用于快速检…

口腔管理平台 |基于springboot框架+ Mysql+Java+B/S结构的口腔管理平台 设计与实现(可运行源码+数据库+lw文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 会员功能 系统功能设计 数据库E-R图设计 lunwen参考…

五连杆机构运动学仿真 | Matlab源码 | 机械连杆 | 五杆机构

【程序简介】💻🔍 本程序通过matlab实现了五连杆机构的运动学仿真编程,动态展现了五连杆机构的运动动画。 你将获得:五连杆机构Matlab仿真源码 获取地址:五连杆机构运动学仿真 | Matlab源码 |机械连杆 程序仿真的五…

2024年【危险化学品经营单位主要负责人】新版试题及危险化学品经营单位主要负责人复审考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年【危险化学品经营单位主要负责人】新版试题及危险化学品经营单位主要负责人复审考试,包含危险化学品经营单位主要负责人新版试题答案和解析及危险化学品经营单位主要负责人复审考试练习。安全生产模…

Pulsar从入迷到入魔之路

一、引言 系统学习Pulsar的大纲 二、正文 下图是我绘制的Pulsar大纲 (由于时间缘故花的比较粗糙,这张图会不定期更新) 三、学习大纲 一、Pulsar Client 二、生产者 Pulsar消息路由深入剖析 三、消费者 四、Topic pulsar原来是这样操作topic的 五、Funct…

PS学习 - 抠图-通道-主题颜色和背景颜色不能相近

抠出蝴蝶 1.通道抠图 套索工具 这里需要圈住你要的,注意尽量小点 ctrl j 复制 然后去掉背景 点击通道 找到明暗对比最大的通道,这里我理解为颜色反差最大的那个,突出你要抠的东西 搜了下说是一般为蓝色 复制通道 ctrll调出色阶 通过移…

RabbitMQ学习总结-延迟消息

1.死信交换机 一致不被消费的信息/过期的信息/被标记nack/reject的信息,这些消息都可以进入死信交换机,但是首先要配置的有私信交换机。私信交换机可以再RabbitMQ的客户端上选定配置-dead-letter-exchange。 2.延迟消息 像我们买车票,外卖…

llamma笔记:部署Llama2

1 申请Llama2 许可 Download Llama (meta.com) 地址似乎不能填中国 1.1 获取url 提交申请后,填的那个邮箱会受到一封meta发来的邮件,打码部分的url,之后会用得上 2 ubuntu/linux 端部署Llama2 2.1 git clone Llama2的github 仓库 bash g…

掌握C#: 从基础到精通 - 中级实战练习集

文章目录 异常处理尝试-捕获结构 文件 I/O 练习追加而不覆盖处理目录 LINQ 查询练习筛选集合中的对象排序复杂对象 类与对象练习继承与多态性 你是否已经掌握了C#的基础知识,正在寻找更多挑战来提升你的能力?那么,这篇文章就是为你准备的。我…

【网络】详解HTTPS及探究加密过程

目录 一、什么是HTTPS1、加密解密是什么2、为什么要加密3、常见的加密方式1、对称加密2、非对称加密 二、探究HTTPS如何实现加密1、方案一----只使用对称加密2、方案二----只使用非对称加密3、方案三----双方都使用非对称加密4、方案四----非对称加密 对称加密5、中间人攻击6、…

【软件测试】软件测试的基本概念和开发模型

1. 前言 在进行软件测试的学习之前,我们要了解软件测试一些基本概念. 这些基本概念将帮助我们更加明确工作的目标以及软件测试到底要做什么. 2. 软件测试的基本概念 软件测试的基本概念有3个,分别是需求,测试用例和BUG. 2.1 需求 这里的需求还可以分为 用户需求和软件需求,用…

【时事篇-05-03】20240316 一笔145元拆分成3笔存款存入(排除有相似性的十位数字)

背景需求 前文提到,每笔都存一样的数目,容易被银行识别违法, 【时事篇-05-01】20240112 150元存46只货币基金-CSDN博客文章浏览阅读580次,点赞15次,收藏11次。【时事篇-05-01】20240112 150元存46只货币基金https://…

2核4G服务器够用吗?性能测评自己看

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

riscv 各种版本 gcc 工具链编译与安装

riscv 各种版本 gcc 工具链编译与安装 riscv gcc工具下载 Riscv 的 gcc 交叉编译器,以开源的方式托管在 github 上。链接如下: https://github.com/riscv/riscv-gnu-toolchain 该仓库,里面包含了一些子仓库。 使用以下这个命令&#xff0…

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

【OJ】string类题目

个人主页 : zxctscl 如有转载请先通知 题目 1. 415字符串相加1.1 分析1.2 代码 2. 344反转字符串2.1 分析2.2 代码 3. HJ1字符串最后一个单词的长度3.1 分析3.2 代码 4. 387.字符串中的第一个唯一字符4.1 分析4.2 代码 5. 125验证回文串5.1 分析5.2 代码 1. 415字符…

20240309web前端_第一周作业_完成电子汇款单

作业二&#xff1a;完成电子汇款单 成果展示: 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

【MatLab】之:Simulink安装

一、内容简介 本文介绍如何在 MatLab 中安装 Simulink 仿真工具包。 二、所需原材料 MatLab R2020b&#xff08;教学使用&#xff09; 三、安装步骤 1. 点击菜单中的“附加功能”&#xff0c;进入附加功能管理器&#xff1a; 2. 在左侧的“按类别筛选”下选择Using Simulin…

2024043期传足14场胜负前瞻

2024043期售止时间为3月17日&#xff08;周日&#xff09;21点30分&#xff0c;敬请留意&#xff1a; 本期深盘多&#xff0c;1.5以下赔率1场&#xff0c;1.5-2.0赔率7场&#xff0c;其他场次是平半盘、平盘。本期14场整体难度中等偏上。以下为基础盘前瞻&#xff0c;大家可根据…