爬虫框架Scrapy之将数据存在Mongodb

用Pymongo保存数据

爬取豆瓣电影top250movie.douban.com/top250的电影数据,并保存在MongoDB中。

items.py

class DoubanspiderItem(scrapy.Item):
    # 电影标题
    title = scrapy.Field()
    # 电影评分
    score = scrapy.Field()
    # 电影信息
    content = scrapy.Field()
    # 简介
    info = scrapy.Field()

spiders/douban.py

import scrapy
from doubanSpider.items import DoubanspiderItem

class DoubanSpider(scrapy.Spider):
    name = "douban"
    allowed_domains = ["movie.douban.com"]
    start = 0
    url = ‘https://movie.douban.com/top250?start=‘
    end = ‘&filter=‘
    start_urls = [url + str(start) + end]

    def parse(self, response):

        item = DoubanspiderItem()

        movies = response.xpath("//div[@class=\‘info\‘]")

        for each in movies:
            title = each.xpath(‘div[@class="hd"]/a/span[@class="title"]/text()‘).extract()
            content = each.xpath(‘div[@class="bd"]/p/text()‘).extract()
            score = each.xpath(‘div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()‘).extract()
            info = each.xpath(‘div[@class="bd"]/p[@class="quote"]/span/text()‘).extract()

            item[‘title‘] = title[0]
            # 以;作为分隔,将content列表里所有元素合并成一个新的字符串
            item[‘content‘] = ‘;‘.join(content)
            item[‘score‘] = score[0]
            item[‘info‘] = info[0]
            # 提交item

            yield item

        if self.start <= 225:
            self.start += 25
            yield scrapy.Request(self.url + str(self.start) + self.end, callback=self.parse)

pipelines.py


from scrapy.conf import settings
import pymongo

class DoubanspiderPipeline(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

BOT_NAME = ‘doubanSpider‘

SPIDER_MODULES = [‘doubanSpider.spiders‘]
NEWSPIDER_MODULE = ‘doubanSpider.spiders‘

ITEM_PIPELINES = {
        ‘doubanSpider.pipelines.DoubanspiderPipeline‘ : 300
        }

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36‘

# MONGODB 主机环回地址127.0.0.1
MONGODB_HOST = ‘127.0.0.1‘
# 端口号,默认是27017
MONGODB_PORT = 27017
# 设置数据库名称
MONGODB_DBNAME = ‘DouBan‘
# 存放本次数据的表名称
MONGODB_DOCNAME = ‘DouBanMovies‘

运行

启动MongoDB数据库需要两个命令:

mongod:是mongoDB数据库进程本身
mongo:是命令行shell客户端

sudo mongod # 首先启动数据库服务,再执行Scrapy
sudo mongo # 启动数据库shell

在mongo shell下使用命令:

# 查看当前数据库
> db

# 列出所有的数据库
> show dbs

# 连接DouBan数据库
> use DouBan

# 列出所有表
> show collections

# 查看表里的数据
> db.DouBanMoives.find()

				
时间: 2024-10-19 03:55:32

爬虫框架Scrapy之将数据存在Mongodb的相关文章

小白学 Python 爬虫(40):爬虫框架 Scrapy 入门基础(七)对接 Selenium 实战

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

欢迎加入Python学习交流群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 ! 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于

第三篇:爬虫框架 - Scrapy

前言 Python提供了一个比较实用的爬虫框架 - Scrapy.在这个框架下只要定制好指定的几个模块,就能实现一个爬虫. 本文将讲解Scrapy框架的基本体系结构,以及使用这个框架定制爬虫的具体步骤. Scrapy体系结构 其具体执行流程如下: 1. 任务管理器Scheduler将初始下载任务递交给下载器Downloader:       2. 下载器Downloader将下载好了的页面传递给爬取分析器Spiders进行分析. 爬取分析器分析的结果分为两种: a) 本次爬取所得数据 -> 它将

【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可

Python爬虫框架Scrapy教程(1)—入门

最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题.时间.正文等).问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata这类标准.这时候所有网页共用一套默认规则无法保证正确抓取到信息,而每个网页写一份spider代码也不切实际. 这时候,我迫切地希望能有一个框架可以通过只写一份spider代码和维护多个网站的爬取规则,就能自动抓取这些网站的信息,很庆幸 Scrapy 可以做到这点.鉴于国内外关于这方面资料太少,所以我将这段时间来的经验和代码分

爬虫框架Scrapy

前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫框架Scrapy就这样出场了! Scrapy = Scrach+Python,Scrach这个单词是抓取的意思, 暂且可以叫它:小抓抓吧. 小抓抓的官网地址:点我点我. 那么下面来简单的演示一下小抓抓Scrapy的安装流程. 具体流程参照:官网教程 友情提醒:一定要按照Python的版本下载,要不然

怎么在32位windows系统上搭建爬虫框架scrapy?

禁止转载: 自学python,然后搭建爬虫框架scrapy.费了我一上午的心血.终于搭建成功,以防以后忘记搭建流程,特此撰写此贴,开写 *************************************************************************************************************** 首先安装python,我安装的是python2.7.12,安装在F:\python2.7.12,资源自行下载.由于在安装python的时候,

Linux 安装python爬虫框架 scrapy

Linux 安装python爬虫框架 scrapy http://scrapy.org/ Scrapy是python最好用的一个爬虫框架.要求: python2.7.x. 1. Ubuntu14.04 1.1 测试是否已经安装pip # pip --version 如果没有pip,安装: # sudo apt-get install python-pip 1.2 然后安装scrapy Import the GPG key used to sign Scrapy packages into APT

教你分分钟学会用python爬虫框架Scrapy爬取你想要的内容

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 python爬虫学习课程,下载地址:https://pan.baidu.com/s/1v6ik6YKhmqrqTCICmuceug 课程代码原件:课程视频: 原文地址:http://blog.51cto.com/aino007/2123341