利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline

需要在类属性中定义两个常量

  DB_URL:数据库的URL地址

  DB_NAME:数据库的名字

在Spider爬取的整个过程中,数据库的连接和关闭操作只需要进行一次就可以,应该在开始处理之前就要连接数据库,并在处理完所有数据之后就关闭数据库。所以需要在open_spider和close_spider中定义数据库的连接和关闭操作

  在process_item中实现MongoDB的写入操作,使用self.db和spider.name获得一个集合,然后就是将数据插入到这个集合中,集合对象的insert_one插入的是一个字典对象,不能传入item对象,所以在调用之前要对这个item对象进行判断,如果是item对象就要转成字典

如果要是想通过配置文件来进行配:

  增加了类方法from_crawler(cls, cralwer),代替了在类属性中定义的DB_URL,DB_NAME

  如果是一个item pipeline定一个from_crawler方法,scrapy就会调用这个方法来创建item pipeline对象。这个方法有两个参数

    cls

      item pipeline类的对象,这里指的是当前这个item pipeline对象

    crawler

     Crawler是scrapy中的一个核心的对象,可以通过crawler的settings属性访问配置文件

  在from_crawler中,读取配置文件中的MONGO_DB_URL和MONGO_DB_NAME(不存在使用默认值),赋值给cls的属性,也就是当前item pipeline的对象

  其它的读取关闭没有发生任何的改变,读取关闭都是正常的操作

在scrapy中将数据保存到mongodb中的更多相关文章

  1. Python爬虫数据保存到MongoDB中

    MongoDB是一款由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储方式类似于JSON对象,它的字段值可以是其它文档或数组,但其数据类型只能是String文本型. ...

  2. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  3. 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB

    本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...

  4. 吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中

    1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...

  5. 将爬取的数据保存到mysql中

    为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...

  6. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...

  7. c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)

    使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...

  8. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  9. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

随机推荐

  1. 2019-4-29-WPF-如何判断一个控件在滚动条的里面是用户可见

    title author date CreateTime categories WPF 如何判断一个控件在滚动条的里面是用户可见 lindexi 2019-4-29 9:42:2 +0800 2019 ...

  2. apache的目录浏览功能 列出的文件名不完整,能否修改设置

    在httpd.conf 和 httpd-vhosts.conf中的  <Directory ????> </Directory>如下设置,重启apache即可: <Dir ...

  3. js添加节点

    <!DOCTYPE html><html><body><script>var message=document.createTextNode(" ...

  4. 数据库MySQL--分页查询

    应用场景:当显示的数据一页无法全部显示,则需要分页提交sql请求 语法: select 查询列表 from 表 {    (join type)join 表2 on 连接条件 where 筛选条件 g ...

  5. MySQL回滚到某一时刻数据的方法

    MySQL回滚到某一时刻数据的方法       对于有归档日志的数据库来说,原理上都具备全库回滚到之前某一时刻的能力.在这方面最好用的Orale数据库,使用Oracle数据库的RMAN工具,可以方便的 ...

  6. day14 python02---字符串

    day02 数字相关的转换 bin() 2进制oct() 8进制hex() 16进制 字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之 ...

  7. js--判断当前环境是否为app环境

    /** *判断是否是app环境 */ function getIsApp () { var ua = navigator.userAgent.toLowerCase(); if (ua.match(/ ...

  8. iserver中的服务数据迁移

    今天需要将iserver测试服务器上的空间数据服务(数据源是Oracle Plus)迁移到客户的正式服务器,原想需要很大的工作量,其实是这样简单: 一.保证客户的iserver环境都已安装正确.对于o ...

  9. tomcat部署war和war exploded区别和intellij idea部署项目的位置

    tomcat部署war和war exploded区别和intellij idea部署项目的位置 来自https://blog.csdn.net/u013041642/article/details/7 ...

  10. Java中循环体的初步了解以及另一种随机数的获取方法

    Math中的相关操作 随机数 Java中除了可以直接导入Random类,获取随机数,还可以通过本身自带的Math方法去获取随机数.Math.random()可以产生随机小数,区间范围为[0.0,1.0 ...