利用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. [CF1244C] The Football Season【数学,思维题,枚举】

    Online Judge:Luogu,Codeforces Round #592 (Div. 2) C Label:数学,思维题, 枚举 题目描述 某球队一共打了\(n\)场比赛,总得分为\(p\), ...

  2. centos7 RPM命令安装操作

    RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv example.rpm 安装 exam ...

  3. Batch - C:\Progra~1是什么意思

    就是那种DOS下的8.3的规范,可以这样写 C:\Progra~1也可以这样写全名字的 "C:\Program File",因为这个路径中的文件夹名有空格,要用两个英文输入法下的双 ...

  4. C# 调用 C#DLL

    加载dll-添加引用 添加引用的意思是让程序生成时根据配置的路径去加载相应的dll.其引用的步骤如下图所示: 解决方案->引用-> 添加引用-> 浏览-> 选择dll所在的路径 ...

  5. CF Round #427 (Div. 2) C. Star sky [dp]

    题目链接就长这样子? time limit per test 2 seconds memory limit per test 256 megabytes   Description The Carte ...

  6. BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)

    传送门 解题思路 最小表示法.首先对于判断是不是循环同构的串,直接扫一遍用哈希判即可.然后要输出字典序最小的就要用到最小表示法,首先可以把串复制一遍,这样的话就可以把串变成静态操作.如果对于两个位置\ ...

  7. VS2010-MFC(常用控件:列表视图控件List Control 下)

    转自:http://www.jizhuomi.com/software/197.html 上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构 ...

  8. <day003>登录+爬取淘宝商品信息+字典用json存储

    任务1:利用cookie可以免去登录的烦恼(验证码) ''' 只需要有登录后的cookie,就可以绕过验证码 登录后的cookie可以通过Selenium用第三方(微博)进行登录,不需要进行淘宝的滑动 ...

  9. 在页面上显示PDF

    /// <summary> /// 读取PDF文件 /// </summary> /// <param name="fName">文件名称(可以 ...

  10. 倍增(在线)求LCA

    这几天,提高B组总是有求LCA的题.由于我是蒟蒻,所以老是做不出来,直接上暴力.现在才弄懂. 没耐心看前面部分的大神门可以直接看后面. ST(RMQ)算法(在线)求LCA LCA是什么? 在一棵树上, ...