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


Posted in Python onAugust 14, 2019

创建爬虫项目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选择排序算法的实现代码
Nov 21 Python
Python中的localtime()方法使用详解
May 22 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
python妙用之编码的转换详解
Apr 21 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
Python绘制热力图示例
Sep 27 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
python实现梯度法 python最速下降法
Mar 24 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 #Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 #Python
使用Python实现图像标记点的坐标输出功能
Aug 14 #Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 #Python
python提取照片坐标信息的实例代码
Aug 14 #Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 #Python
详解用python计算阶乘的几种方法
Aug 14 #Python
You might like
详谈PHP文件目录基础操作
2014/11/11 PHP
php猜单词游戏
2015/09/29 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
Python正则表达式使用经典实例
2016/06/21 Python
Python中super函数的用法
2017/11/17 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
Java程序员面试题
2013/07/15 面试题
个人自我评价和职业目标
2014/01/24 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
《满井游记》教学反思
2014/02/26 职场文书
宣传口号大全
2014/06/16 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript