Python使用mongodb保存爬取豆瓣电影的数据过程解析

 更新时间:2019年08月14日 10:51:44   作者:silence-cc   我要评论

这篇文章主要介绍了Python使用mongodb保存爬取豆瓣电影的数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

创建爬虫项目douban

scrapy startproject douban

设置items.py文件,存储要保存的数据类型和字段名称

# -*- coding: utf-8 -*-
import scrapy
class DoubanItem(scrapy.Item):
 title = scrapy.Field()
 # 内容
 content = scrapy.Field()
 # 评分
 rating_num = scrapy.Field()
 # 简介
 quote = scrapy.Field()

设置爬虫文件doubanmovies.py

# -*- coding: utf-8 -*-
import scrapy
from douban.items import DoubanItem
class DoubanmoviesSpider(scrapy.Spider):
 name = 'doubanmovies'
 allowed_domains = ['movie.douban.com']
 offset = 0
 url = 'https://movie.douban.com/top250?start='
 start_urls = [url + str(offset)]
 def parse(self, response):
  # print('*'*60)
  # print(response.url)
  # print('*'*60)
  item = DoubanItem()
  info = response.xpath("//div[@class='info']")
  for each in info:
   item['title'] = each.xpath(".//span[@class='title'][1]/text()").extract()
   item['content'] = each.xpath(".//div[@class='bd']/p[1]/text()").extract()
   item['rating_num'] = each.xpath(".//span[@class='rating_num']/text()").extract()
   item['quote'] = each .xpath(".//span[@class='inq']/text()").extract()
   yield item
   # print(item)
  self.offset += 25
  if self.offset <= 250:
   yield scrapy.Request(self.url + str(self.offset),callback=self.parse)

设置管道文件,使用mongodb数据库来保存爬取的数据。重点部分

# -*- coding: utf-8 -*-
from scrapy.conf import settings
import pymongo
class DoubanPipeline(object):
 def __init__(self):
  self.host = settings['MONGODB_HOST']
  self.port = settings['MONGODB_PORT']
 def process_item(self, item, spider):
  # 创建mongodb客户端连接对象,该例从settings.py文件里面获取mongodb所在的主机和端口参数,可直接书写主机和端口
  self.client = pymongo.MongoClient(self.host,self.port)
  # 创建数据库douban
  self.mydb = self.client['douban']
  # 在数据库douban里面创建表doubanmovies
  # 把类似字典的数据转换为phthon字典格式
  content = dict(item)
  # 把数据添加到表里面
  self.mysheetname.insert(content)
  return item

设置settings.py文件

# -*- coding: utf-8 -*-
BOT_NAME = 'douban'
SPIDER_MODULES = ['douban.spiders']
NEWSPIDER_MODULE = 'douban.spiders'
USER_AGENT = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
# Configure a delay for requests for the same website (default: 0)
# See https://doc.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16
# Disable cookies (enabled by default)
COOKIES_ENABLED = False
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
 'douban.pipelines.DoubanPipeline': 300,
}
# mongodb数据库设置变量
MONGODB_HOST = '127.0.0.1'
MONGODB_PORT = 27017

终端测试

scrapy crawl douban

这博客园的代码片段缩进,难道要用4个空格才可以搞定?我发现只能使用4个空格才能解决如上图的代码块的缩进

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python设计模式之中介模式简单示例

    Python设计模式之中介模式简单示例

    这篇文章主要介绍了Python设计模式之中介模式,简单介绍了中介模式的概念、功能,并结合实例形式给出了Python定义与使用中介模式的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Python实现读写INI配置文件的方法示例

    Python实现读写INI配置文件的方法示例

    这篇文章主要介绍了Python实现读写INI配置文件的方法,结合实例形式分析了Python针对ini配置文件的读写操作类定义及使用方法,需要的朋友可以参考下
    2018-06-06
  • 学习python (2)

    学习python (2)

    学习python (2)...
    2006-10-10
  • 详解Python之unittest单元测试代码

    详解Python之unittest单元测试代码

    本篇文件主要介绍了详解Python之unittest测试代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Python基于多线程操作数据库相关问题分析

    Python基于多线程操作数据库相关问题分析

    这篇文章主要介绍了Python基于多线程操作数据库相关问题,结合实例形式分析了Python使用数据库连接池并发操作数据库避免超时、连接丢失相关实现技巧,需要的朋友可以参考下
    2018-07-07
  • python先序遍历二叉树问题

    python先序遍历二叉树问题

    这篇文章主要介绍了python先序遍历二叉树问题,简单分析了问题,然后向大家分享了代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python数据分析之双色球中蓝红球分析统计示例

    Python数据分析之双色球中蓝红球分析统计示例

    这篇文章主要介绍了Python数据分析之双色球中蓝红球分析统计,结合实例形式较为详细的分析了Python针对双色球蓝红球中奖数据分析的相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • Python使用win32 COM实现Excel的写入与保存功能示例

    Python使用win32 COM实现Excel的写入与保存功能示例

    这篇文章主要介绍了Python使用win32 COM实现Excel的写入与保存功能,结合实例形式分析了Python调用win32 COM组件针对Excel文件的读写与保存相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • 一看就懂得Python的math模块

    一看就懂得Python的math模块

    今天小编就为大家分享一篇关于Python的math模块,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法

    python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法

    今天小编就为大家分享一篇python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论