图片 13

Scrapy爬虫之MongoDB数据存款和储蓄

存入MongoDB

在djanjo框架中我们最常用的框架分别就是mysql和sqlit了,下面我们将分别讲述一下这俩种数据库的基础必备知识

    小编是一个爬虫初学者,学习python爬虫已有一段时间了,对Scrapy框架开发有自己的一点小见解,如果有说不对的地方,希望大家多多指点。小编用的是Python2.7,如果觉得版本太旧,也可以用3.x版本,可能语法上有点不同。为了方便,小编在windows系统下开发案例。小编这次做了关于对拉勾网招聘信息采集的简单爬虫,并将采集的信息存放到MongoDB数据库中。

1.启动MongoDB数据库:sudo mongod

mysql

一、利用命令创建(在终端上执行)

1、首先创建一个project项目

djanjo—admin startproject project名字

2、创建app(首先必须利用cd切换到该project下面)

Python3 startapp APP名字

3、运行程序

python3 manage.py runserver 127.0.0.1:8009

二、利用pycharm进行快速创建

图片 1

三、各种配置

1、django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL

如下设置放置的与project同名的配置的 __init__.py文件中

图片 2

2、注册APP

图片 3

3、数据库配置

图片 4

DATABASES = {

    'default': {

    'ENGINE': 'django.db.backends.mysql',

    'NAME':'dbname',

    'USER': 'root',

    'PASSWORD': 'xxx',

    'HOST': '',

    'PORT': '',

    }

}

4、静态文件配置

有静态文件的情况下,我们需要再从新创建一个关于静态文件的文件夹,然后再在settings中匹配静态文件的路径

STATICFILES_DIRS = (

        os.path.join(BASE_DIR,'static'),

    )

 图片 5

四、创建数据库表

一、利用命令创建(在终端上执行)

python3 manage.py makemigrations

python3 manage.py migrate

二、在pycharm上创建

图片 6

进入以后输入(相当于省去了启动步骤—-python manage.py)

makemigrations

migrate

   
在开始代码之前,还没有安装过MongoDB的朋友,可以先去官网下载并安装。MongoDB下载官网:https://www.mongodb.com/download-center;安装和使用教程:

2.执行下面程序:py2 process_youyuan_mongodb.py

admin 

创建后台管理员admin命令:

python manage.py createsuperuser

创建超级用户后,登录admin发现我们定义的表并不在,我们需要对所创建的表(类)进行注册:

图片 7

 

.安装和配置完成后,因为权限不足的问题,需要在管理员模式下启动MongoDB,MongoDB的开启方法已在使用教程中展示,如下图所示.

# process_youyuan_mongodb.py# -*- coding: utf-8 -*-import jsonimport redisimport pymongodef main(): # 指定Redis数据库信息 rediscli = redis.StrictRedis(host='192.168.199.108', port=6379, db=0) # 指定MongoDB数据库信息 mongocli = pymongo.MongoClient(host='localhost', port=27017) # 创建数据库名 db = mongocli['youyuan'] # 创建表名 sheet = db['beijing_18_25'] while True: # FIFO模式为 blpop,LIFO模式为 brpop,获取键值 source, data = rediscli.blpop(["youyuan:items"]) item = json.loads(data) sheet.insert(item) try: print u"Processing: %(name)s %(link)s" % item except KeyError: print u"Error procesing: %r" % itemif __name__ == '__main__': main()

  图片 8

存入 MySQL

 然后打开任意浏览器,输入地址:http://localhost:27017,如果一切正常,如下图所示,表示MongoDB数据正常使用.

1.启动mysql:mysql.server start

    图片 9

2.登录到root用户:mysql -uroot -p

  

3.创建数据库youyuan:create database youyuan;

 启动MongoDB后,创建爬虫工程,以lagou为例,具体代码如下:

4.切换到指定数据库:use youyuan

 编写lagourecruit.py文件

5.创建表beijing_18_25以及所有字段的列名和数据类型。

    图片 10

6.执行下面程序:py2 process_youyuan_mysql.py

    图片 11

#process_youyuan_mysql.py# -*- coding: utf-8 -*-import jsonimport redisimport MySQLdbdef main(): # 指定redis数据库信息 rediscli = redis.StrictRedis(host='192.168.199.108', port = 6379, db = 0) # 指定mysql数据库 mysqlcli = MySQLdb.connect(host='127.0.0.1', user='power', passwd='xxxxxxx', db = 'youyuan', port=3306, use_unicode=True) while True: # FIFO模式为 blpop,LIFO模式为 brpop,获取键值 source, data = rediscli.blpop(["youyuan:items"]) item = json.loads(data) try: # 使用cursor()方法获取操作游标 cur = mysqlcli.cursor() # 使用execute方法执行SQL INSERT语句 cur.execute("INSERT INTO beijing_18_25 (username, crawled, age, spider, header_url, source, pic_urls, monologue, source_url) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s )", [item['username'], item['crawled'], item['age'], item['spider'], item['header_url'], item['source'], item['pic_urls'], item['monologue'], item['source_url']]) # 提交sql事务 mysqlcli.commit() #关闭本次操作 cur.close() print "inserted %s" % item['source_url'] except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1])if __name__ == '__main__': main()

  

总结

 编写items.py文件

以上所述是小编给大家介绍的分布式爬虫处理Redis里的数据操作步骤,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    图片 12

  

 编写setting.py文件,同时设置好自己的User-Agent

    图片 13