scrapy—MongoDB存储

阅读文本需要2分钟

在上一次的爬取代理IP的实战中并没有用到数据库,只是单纯的将爬取到的数据写进json文件,这样子不方便我们以后使用。所以在这里讲述一下在scrapy中如何使用数据库存储。

MongoDB介绍

可能我们经常使用的数据库是,MySQL、oracle这些数据库,这些数据库都是关系数据库,现在我们使用另外一种数据库——MongoDB

MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

比如下面的这样

在这里就不写MongoDB的安装过程了,我会在留言下面放上教程链接

pymongo安装

想要在scrapy中使用MongoDB,除了安装好MongoDB数据库之外,还需安装pymongo

直接使用pip安装就可以,中间应该不会出现什么问题

pip install pymongo

item pipeline介绍

假设已经安装好了,下面就来介绍一下scrapy是如何存储的。

在scrapy的文档中,这样写道:

当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。

每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

所以,我们可以按照文档的要求,一步步地实现我们的目的。

实现步骤:

1. 在中定义存储类

2. 在中存储类初始化

3. 在中实现 process_item(item, spider)

4. 在中启用一个Item Pipeline组件

下面就直接放出在这两个文件的代码了,注释已经写得很清楚了,相信你们可以看得懂

pipelines.py

settings.py

当我们想用MongoDB存储时,pipelines.py可以不用修改,直接拿来使用就可以;settings.py在使用的时候,只需修改数据库名和表名就可以了

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180523G07ECP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券