scrapy的数据保存到数据库

news2024/11/24 6:58:07

将数据保存到数据库

mysql数据库

下载链接数据库的依赖

 Conda/pip install pymysql

在piplines.py 文件中

重写open_spider方法

​ 连接到mysql数据库

    def open_spider(self, spider):
        self.conn = pymysql.Connect(
            host='localhost',
            port=3306,
            user='root',
            password='20020115',
            db='scrapy',
        )
        self.cursor = self.conn.cursor()

重写process_item方法

​ 将数据保存到数据库中

    def process_item(self, item, spider):
        sql = "INSERT INTO  scrapy.srr1(movie_name,movie_dates,movie_times,movie_scores,movie_adds,movie_pq) values ('%s','%s','%s','%s','%s','%s')"
        self.cursor.execute(
            sql % (
                item['movie_name'],
                item['movie_dates'],
                item['movie_times'],
                item['movie_scores'],
                item['movie_adds'],
                item['movie_pd'],
            )
        )
        self.conn.commit()
        return item

重写close_spider()

​ 关闭爬虫时关闭数据库连接

    def close_spider(self, spider):
        self.conn.close()
        self.cursor.close()

代码解析

请添加图片描述

最后找到setting.py文件中的以下内容并且取消注释并且将指定优先级(优先级是一个 )

ITEM_PIPELINES = {
   "ss1_miove.pipelines.Ss1MiovePipeline": 300,
}

请添加图片描述

在native中查看数据验证程序是否成功运行

请添加图片描述

mongoDB数据库

数据库的安装参考:MongoDB数据库安装_阿龙的代码在报错的博客-CSDN博客

在Python环境中下载pymongo的库用来连接数据库并且写入数据

pip install pymongo

在其他内容不变的前提下载piplines.py文件中创建一个新的类并且重写open_spider、process_item、close_spider这三个方法

# 将数据写入MongoDB数据库
class Scrapyssr1Miovemongopipline(object):

    def open_spider(self, spider):
        self.conn = pymongo.MongoClient('localhost', 27017)
        self.db = self.conn.ssr1_movie
        self.mioves = self.db.mioves

    def process_item(self, item, spider):
        self.mioves.insert_one(
            {
                "name": item['movie_name'],
                "date": item['movie_dates'],
                "time": item['movie_times'],
                "score": item['movie_scores'],
                "location": item['movie_adds'],
                "pq": item['movie_pd'],
            }
        )

    def close_spider(self, spider):
        self.conn.close()

代码解析
请添加图片描述

需要注意的是:pymongo 4.0.2 不再使用 insert () 而使用 insert_one () 或 insert_many ()

最后一步就是去setting.py文件中注册并且设置优先级

这里需要将其他的持久化存储方式注释掉

ITEM_PIPELINES = {
    # "ss1_miove.pipelines.Ss1MiovePipeline": 300,
    'ss1_miove.pipelines.Scrapyssr1Miovemongopipline': 300,
}

在MongoDB图形化程序中查看数据验证程序是否成功运行

请添加图片描述

数据库中有数据并且数据正确,证明数据采集成功,并且完成数据的持久化存储

上一篇文章:创建完整的scrapy

个人笔记仅供参考,部分电脑可能因为环境不用代码无法运行,见谅。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go系列-读取文件

1 概述 2 整个文件读入内存 直接将数据直接读取入内存,是效率最高的一种方式,但此种方式,仅适用于小文件,对于大文件,则不适合,因为比较浪费内存。 2.1 直接指定文化名读取 在 Go 1.16 开始,i…

chatgpt赋能python:Python编程语言制作的著名游戏

Python编程语言制作的著名游戏 Python是一种广泛使用的编程语言,其简单易读的语法让其成为许多游戏开发者的首选。本文将介绍利用Python编程语言制作的几个著名游戏,并将着重标记加粗它们的标题,以便于读者更容易了解。 1. 游戏&#xff1a…

【Python】python入门篇

概述 官网 https://www.python.org/ Python 是一种脚本语言(scripting language)。 与编译型语言(如 C 和 C)不同,Python 的程序代码不需要进行显式的编译,在执行时会动态地解释执行代码。 Python 的脚本执…

FFmpeg 解码 AAC 格式的音频

FFmpeg 默认是可以解码 AAC 格式的音频,但是如果需要获取 PCM16 此类数据则需要经过音频转码。首先要打开解码器,然后向解码器发送 AAC 音频帧(不带 ADTS),然后从解码器获取解码后的音频帧,数据是 float 类…

【软考网络管理员】2023年软考网管初级常见知识考点(12)-应用层协议

涉及知识点 应用层协议详解,DNS的概念,FTP的概念,DHCP的概念,Telnet的概念,电子邮件协议 软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主…

我的内网渗透-代理转发(2)

目录 ssh telnet与SSH的区别 安装环境 常用参数 本地端口转发 远程端口转发 动态端口转发 Socks 使用方法 msf端口转发 常用参数 使用方法 创建监听 MSF读取文件命令(开启msf的时候直接读取文件就自动设置好监听的各种配置) 获取会话后 …

NCI Core Control Messages

NCI 版本参数应编码为 8 位字段,由两个 4 位无符号值组成,表示本规范的主要和次要版本级别。 最高有效 4 位应表示主要版本级别。 最低有效 4 位应表示本规范的次要版本级别。 如果 DH 支持 NFCC 报告的主要版本,则 DH 应继续通信&#xff0…

同比增长超300%,「手势识别」前装赛道借势多模态座舱交互

在座舱多模态交互系统中,手势识别功能正在成为主流的配置之一。高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)乘用车前装标配手势识别功能交付37.39万辆;今年1-4月交付23.90万辆,同比增长超过…

Linux下的free、uname、uptime、netstat、dmesg指令

文章目录 1 查看内存的使用情况:free2 查看系统与内核相关信息:uname3 查看系统运行时间和负载(uptime)4 查看端口监听:netstat5 分析内核产生的信息:dmesg 1 查看内存的使用情况:free free -m…

C++进阶—二叉搜索树

目录 0. 前言 1. 二叉搜索树概念 2. 二叉搜索树操作 3. 二叉搜索树的实现 3.1 非递归实现插入操作Insert 3.2 二叉搜索树中序遍历递归实现(排序) 3.3 非递归实现查找操作Find 3.4 非递归实现删除操作Erase 3.5 递归实现插入操作InsertR 3.5 递…

c++读取文件之---yaml-cpp使用

实际项目总会遇到有很多超参数的情况,用常规的结构体等无法有效的涵盖所有,为了方便用户进行配置使用,因此使用yaml的方式进行编辑配置,因此去调研使用了yaml-cpp的使用方法。 1、yaml-cpp下载和编译 下载方式很简单&#xff0c…

openfeign实现远程调用

一 openfeign简介 Feign 是声明性(注解)web 服务客户端它使编写 web 服务客户端更加容易请创建一个接口并对其进行注解.它具有可插入注解支持,包括Feign注解和JAXRS注解Feign 还支持可插拔编码器和解码器。Spring cloud 添加了对Spring MVC注解的支持,并…

chatgpt赋能python:Python编译成SO文件和反编译的介绍

Python编译成SO文件和反编译的介绍 什么是SO文件? SO文件,也称为共享对象文件,是一种二进制文件格式,用于在多个应用程序之间共享代码和数据。在Unix和类Unix系统中,它们通常是共享库文件的形式。因此,SO…

chatgpt赋能python:Python编译成可执行文件:让你的代码更加优雅高效

Python编译成可执行文件:让你的代码更加优雅高效 Python作为世界上最受欢迎的编程语言之一,拥有着丰富的库、面向对象的语法和简单易懂的语法结构。然而,在开发Python应用程序时,受限于Python的解释性,导致程序的效率…

Qt实现自定义控件能够以插件的方式加载到Qt设计师

目录 1、自定义部件/控件2、改进法3、插件法3.1、创建工程3.2、工程目录3.3、修改插件类的代码3.3.1、HexSpinBox类的头文件3.3.2、HexSpinBox类的源文件3.3.3、HexSpinBox类的UI文件3.3.4 需要的注意的事项 3.4、生成动态库 4、测试插件能否正常使用4.1、测试Qt设计师能否识别…

认识@Validated 和 @Valid

对于web应用来说,对方法参数的校验是十分重要的,参数校验的是否全面,直接决定整个方法的健壮性。 除了使用麻烦的if判断校验参数,还可以使用Validated 和 Valid注解来进行优雅地参数校验,让参数校验和写诗一样优雅。 …

手机移动 APP测试流程及测试点

1 APP测试基本流程 1.1 流程图 1.2 测试周期 测试周期可按项目的开发周期来确定测试时间, 一般测试时间为两三 周(即 15 个工作日),根据项目情况以及版本质量可适当缩短或延长 测试时间。正式测试前先向主管确认项目排期。 1.3 测试资源 测试任务开始…

移动云智能算力调度平台,谱写算力互联互通新篇章

中国移动算力网络建设取得新进展!移动云智能算力调度平台验证了多云服务商间异构算力的统一调度能力,联动国家级超算中心、智算中心,促进东部业务灵活使用西部算力,作为未来算力互联网的统一调度平台将持续开展技术攻关与应用创新…

linux系统LNMP架构部署

文章目录 一、Nginx编译安装1、关闭防火墙,安全机制2、安装依赖包3、创建运行用户与组4、解压包、编译安装路径5、编译安装6、优化路径7、添加 Nginx 系统服务、赋权 二、安装 MySQL 服务1、安装环境依赖包2、创建运行用户与组3、解压包、编译安装路径4.编译安装5、…

chatgpt赋能python:用Python编程计算BMI,轻松掌握健康

用Python编程计算BMI,轻松掌握健康 作为一个现代人,保持健康的体态是我们每个人都需要关注的问题。那么,如何快速地计算自己的BMI呢?Python编程可以帮助我们轻松地实现这个目标。 什么是BMI? BMI全称为Body Mass In…