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

声明

本教程为原创教程,转载请注明出处http://kongtianyi.cn/2016/10/14/python/Scrapy-Lesson-4/

本节内容

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

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

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

安装MongoDB

使用apt-get进行安装

1
sudo apt-get install mongodb

打开/关闭服务命令

1
2
sudo service mongodb start
sudo service mongodb stop

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

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

1
2
sudo service mongodb start
mongo

正常如下图所示:
mongo

pymongo的安装

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

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

1
sudo pip install pymongo

结果如下图代表安装成功

安装

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

验证

Scrapy+pymongo

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

首先开启本地的MongoDB服务

1
sudo service mongodb start

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

1
2
3
4
5
6
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- 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还不存在,他会自动被创建出来。

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

1
scrapy crawl heartsong

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

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

这里写图片描述

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

Robmongo的下载使用

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

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

下载

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

官网

进入官网后点击下载链接

下载

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

下载2

下载3

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

解压

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

打开

然后创建链接

连接1

连接2

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

浏览

小结

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

有钱的捧个钱场~