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 相关文章推荐
go语言计算两个时间的时间差方法
Mar 13 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python实现全排列的打印
Aug 18 Python
在双python下设置python3为默认的方法
Oct 31 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
Python求解正态分布置信区间教程
Nov 20 Python
基于pandas中expand的作用详解
Dec 17 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
Python中else的三种使用场景
Jun 16 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递归删除目录与文件的方法
2015/01/30 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
Python struct模块解析
2014/06/12 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
css3实现超炫风车特效
2014/11/12 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
研发工程师的岗位职责
2013/11/18 职场文书
商务专员岗位职责
2013/11/23 职场文书
骨干教师培训制度
2014/01/13 职场文书
一年级评语大全
2014/04/23 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
只用Python就可以制作的简单词云
2021/06/07 Python
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL