爬虫学习(四)mongoDB与Scrapy---优化豆瓣电影实例

爬虫学习(四)mongoDB与Scrapy—优化豆瓣电影实例

知识点笔记:

​ MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。其与Python配合简直是完美。

1. MongoDB的安装:

​ 官方网站下载地址:https://www.mongodb.com/download-center?jmp=nav#atlas

​ 为了更加方便的使用MongoDB,我们还要安装一个可视化工具,我选择的是Robomongo这款免费的软件。

​ 小技巧是: 可以编写一个批处理文件,如图所示,直接点击这个批处理文件就可以直接运行MongoDB,非常方便!

这里写图片描述

​ 其内容如下,用记事本编写,保存为 .bat 格式。

2. Python与MongoDB

​ Python通过库pymongo来完成对mangodb的操作:

      db=connection.myblog    #  *选择库*  

​        collection=db.test  # *使用test集合*  

​        jike= {"name":"lizemin","age":"23"}  #   *添加单条数据到集合中

​        collection.insert(user)     #添加数据

​        collection.remove(users)      #删除数据

测试实例:

# -*-coding:utf8-*-
import pymongo
connection = pymongo.MongoClient()
tdb = connection.mylog
post_info = tdb.test
jike = {'name':u'极客', 'age':'5', 'skill': 'Python'}
god = {'name': u'玉皇大帝', 'age': 36000, 'skill': 'creatanything', 'other': u'王母娘娘不是他的老婆'}
godslaver = {'name': u'月老', 'age': 'unknown', 'other': u'他的老婆叫孟婆'}
post_info.insert(jike)
post_info.insert(god)
post_info.insert(godslaver)
post_info.remove({'name': u'极客'})
print u'操作数据库完成!'

豆瓣电影实例优化

URL:https://movie.douban.com/top250

目标:爬取电影标题,信息,评分以及语录并存储在数据库中

主要在piplines和setting中发现变化,其他代码不变

piplines.py

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

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
from scrapy.conf import settings
import pymongo

class MangoPipeline(object):
    def __init__(self):
        # 获取setting主机名、端口号和数据库名
        host = settings['MONGODB_HOST']
        port = settings['MONGODB_PORT']
        dbname = settings['MONGODB_DBNAME']

        # pymongo.MongoClient(host, port) 创建MongoDB链接
        client = pymongo.MongoClient(host=host,port=port)

        # 指向指定的数据库
        mdb = client[dbname]
        # 获取数据库里存放数据的表名
        self.post = mdb[settings['MONGODB_DOCNAME']]
    def process_item(self, item, spider):
        data = dict(item)
        # 向指定的表里添加数据
        self.post.insert(data)
        return item

settings.py

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

# Scrapy settings for mango project
BOT_NAME = 'mango'

SPIDER_MODULES = ['mango.spiders']
NEWSPIDER_MODULE = 'mango.spiders'

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
ROBOTSTXT_OBEY = True
DOWNLOAD_DELAY =5
COOKIES_ENABLED = True
ITEM_PIPELINES = {
    'mango.pipelines.MangoPipeline': 300,
}

MONGODB_HOST='127.0.0.1'
MONGODB_PORT=27017
MONGODB_DBNAME='MOVIE'
MONGODB_DOCNAME='movie'
#FEED_URI=u'file:///G:/MOSE.csv'
#FEED_FORMAT='CSV'

数据库中结果如图所示:

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值