Scrapy定向爬虫教程(四)——数据存入MongoDB

本节内容

这一小结我们共同学习把Scrapy爬取到的数据存储到MongoDB数据库中。其中包括以下知识:

  • Linux下MongoDB的安装
  • pymongo的安装
  • Scrapy + pymongo
  • Robmongo的下载使用

我已将本节内容的源码传至本项目的useMongoDB分支,不学习本节不影响以后的教程学习。

安装MongoDB

使用apt-get进行安装

sudo apt-get install mongodb

打开/关闭服务命令

sudo service mongodb start
sudo service mongodb stop

如果不对其进行配置的话,MongoDB的默认端口是27017,我们就使用默认配置吧。

为了测试是否安装成功,可以在命令行中输入

sudo service mongodb start
mongo

正常如下图所示:
Scrapy定向爬虫教程(四)——数据存入MongoDB_第1张图片

pymongo的安装

在本地搭起了MongoDB并开启后,我们需要使用Python来操作它,pymongo就是一个Python操作MongoDB的第三方库。

直接使用pip下载它,输入以下命令:

sudo pip install pymongo

结果如下图代表安装成功

Scrapy定向爬虫教程(四)——数据存入MongoDB_第2张图片

可以先在命令行里验证一下是否能够调用,如下图,没问题:

Scrapy定向爬虫教程(四)——数据存入MongoDB_第3张图片

Scrapy+pymongo

我们这里使用的是第三节完成的项目进行修改,项目地址:heartsong。原本是将爬取的数据存入txt文件,现在我们改成将数据存入本地MongoDB数据库,当然,远程数据库也同理啦。

首先开启本地的MongoDB服务

sudo service mongodb start

settings.py文件中添加数据库的配置项

MONGO_HOST = "127.0.0.1"  # 主机IP
MONGO_PORT = 27017  # 端口号
MONGO_DB = "Spider"  # 库名 
MONGO_COLL = "heartsong"  # collection名
# MONGO_USER = "zhangsan"
# MONGO_PSW = "123456"

然后编写Pipelines.py

# -*- coding: utf-8 -*-

import pymongo
from scrapy.conf import settings

class HeartsongPipeline(object):
    def __init__(self):
        # 链接数据库
        self.client = pymongo.MongoClient(host=settings['MONGO_HOST'], port=settings['MONGO_PORT'])
        # 数据库登录需要帐号密码的话
        # self.client.admin.authenticate(settings['MINGO_USER'], settings['MONGO_PSW'])
        self.db = self.client[settings['MONGO_DB']]  # 获得数据库的句柄
        self.coll = self.db[settings['MONGO_COLL']]  # 获得collection的句柄

    def process_item(self, item, spider):
        postItem = dict(item)  # 把item转化成字典形式
        self.coll.insert(postItem)  # 向数据库插入一条记录
        return item  # 会在控制台输出原item数据,可以选择不写

这里要说明一点就是在使用MongoDB的时候不同于MySql,不用事先定义好数据表和表结构。我们用insert语句插入的时候,如果collection还不存在,他会自动被创建出来。

修改好之后就可以跑起来了,命令行输入我们早已熟悉的

scrapy crawl heartsong

在命令行里的显示跟从前一样这里我就不截图了。

那么问题来了,我们的数据存成功了没?好,用命令行查看一波!

Scrapy定向爬虫教程(四)——数据存入MongoDB_第4张图片

但是这样有点麻烦哎……不要烦,不要慌,神器来了!

Robmongo的下载使用

Robmongo是MongoDB的一个可视化管理工具,类似于PhpMyAdmin和MySQL的关系。它有各种系统的版本,Windows、Linux、MacOS都可以在官网上下载。

如果你想使用命令行来管理你的数据库,当然也是OK的,不过就请移步去学一下MongoDB的操作吧^_^。

下载

直接百度一下“Robmongo”,第一个就是它的官网

Scrapy定向爬虫教程(四)——数据存入MongoDB_第5张图片

进入官网后点击下载链接

Scrapy定向爬虫教程(四)——数据存入MongoDB_第6张图片

最新版本是收费的,我们往下拉,选择从前的版本进行下载,土豪当我没说

Scrapy定向爬虫教程(四)——数据存入MongoDB_第7张图片

Scrapy定向爬虫教程(四)——数据存入MongoDB_第8张图片

等啊等,等啊等,下载好了之后,把tar包放到你想放的位置,直接解压/提取即可

Scrapy定向爬虫教程(四)——数据存入MongoDB_第9张图片

进入解压/提取好的文件夹,进入bin目录,双击robmongo即可打开

Scrapy定向爬虫教程(四)——数据存入MongoDB_第10张图片

然后创建链接

Scrapy定向爬虫教程(四)——数据存入MongoDB_第11张图片

Scrapy定向爬虫教程(四)——数据存入MongoDB_第12张图片

然后Save,Connect,就可以浏览数据库信息啦

Scrapy定向爬虫教程(四)——数据存入MongoDB_第13张图片

小结

本节介绍了Scrapy结合MongoDB进行数据存储,MongoDB和pymongo的其他高大上的操作就请各位自己钻研喽。

你可能感兴趣的:(Python,Ubuntu,Scrapy)