热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(案例五)将数据保存在MongoDB中

用Pymongo保存数据爬取豆瓣电影top250movie.douban.comtop250的电影数据,并保存在MongoDB中。items.pyclassDou

用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 DoubanspiderItemclass DoubanSpider(scrapy.Spider):name &#61; "douban"allowed_domains &#61; ["movie.douban.com"]start &#61; 0url &#61; &#39;https://movie.douban.com/top250?start&#61;&#39;end &#61; &#39;&filter&#61;&#39;start_urls &#61; [url &#43; str(start) &#43; end]def parse(self, response):item &#61; DoubanspiderItem()movies &#61; response.xpath("//div[&#64;class&#61;\&#39;info\&#39;]")for each in movies:title &#61; each.xpath(&#39;div[&#64;class&#61;"hd"]/a/span[&#64;class&#61;"title"]/text()&#39;).extract()content &#61; each.xpath(&#39;div[&#64;class&#61;"bd"]/p/text()&#39;).extract()score &#61; each.xpath(&#39;div[&#64;class&#61;"bd"]/div[&#64;class&#61;"star"]/span[&#64;class&#61;"rating_num"]/text()&#39;).extract()info &#61; each.xpath(&#39;div[&#64;class&#61;"bd"]/p[&#64;class&#61;"quote"]/span/text()&#39;).extract()item[&#39;title&#39;] &#61; title[0]# 以;作为分隔&#xff0c;将content列表里所有元素合并成一个新的字符串item[&#39;content&#39;] &#61; &#39;;&#39;.join(content)item[&#39;score&#39;] &#61; score[0]item[&#39;info&#39;] &#61; info[0]# 提交itemyield itemif self.start <&#61; 225:self.start &#43;&#61; 25yield scrapy.Request(self.url &#43; str(self.start) &#43; self.end, callback&#61;self.parse)

pipelines.py



from scrapy.conf import settings
import pymongoclass DoubanspiderPipeline(object):def __init__(self):# 获取setting主机名、端口号和数据库名host &#61; settings[&#39;MONGODB_HOST&#39;]port &#61; settings[&#39;MONGODB_PORT&#39;]dbname &#61; settings[&#39;MONGODB_DBNAME&#39;]# pymongo.MongoClient(host, port) 创建MongoDB链接client &#61; pymongo.MongoClient(host&#61;host,port&#61;port)# 指向指定的数据库mdb &#61; client[dbname]# 获取数据库里存放数据的表名self.post &#61; mdb[settings[&#39;MONGODB_DOCNAME&#39;]]def process_item(self, item, spider):data &#61; dict(item)# 向指定的表里添加数据self.post.insert(data)return item

settings.py



BOT_NAME &#61; &#39;doubanSpider&#39;SPIDER_MODULES &#61; [&#39;doubanSpider.spiders&#39;]
NEWSPIDER_MODULE &#61; &#39;doubanSpider.spiders&#39;ITEM_PIPELINES &#61; {&#39;doubanSpider.pipelines.DoubanspiderPipeline&#39; : 300}# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT &#61; &#39;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&#39;# MONGODB 主机环回地址127.0.0.1
MONGODB_HOST &#61; &#39;127.0.0.1&#39;
# 端口号&#xff0c;默认是27017
MONGODB_PORT &#61; 27017
# 设置数据库名称
MONGODB_DBNAME &#61; &#39;DouBan&#39;
# 存放本次数据的表名称
MONGODB_DOCNAME &#61; &#39;DouBanMovies&#39;

运行启动MongoDB数据库需要两个命令&#xff1a;mongod&#xff1a;是mongoDB数据库进程本身
mongo&#xff1a;是命令行shell客户端sudo mongod # 首先启动数据库服务&#xff0c;再执行Scrapy
sudo mongo # 启动数据库shell在mongo shell下使用命令:# 查看当前数据库
> db# 列出所有的数据库
> show dbs# 连接DouBan数据库
> use DouBan# 列出所有表
> show collections# 查看表里的数据
> db.DouBanMoives.find()












推荐阅读
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • 在Java应用程序中调用`response.getStatus()`方法时遇到了`NoSuchMethodError`异常,经过分析,初步判断为依赖冲突问题。通过检查项目依赖树发现,当前项目版本与某些库的版本不兼容,导致该方法无法被正确识别。建议通过更新相关依赖版本或使用依赖管理工具(如Maven或Gradle)来解决此问题,确保所有依赖项版本一致且兼容。 ... [详细]
  • AngularJS uirouter模块下的状态管理机制深入解析
    本文深入探讨了 AngularJS 中 ui-router 模块的状态管理机制。通过详细分析状态配置、状态转换和嵌套状态等核心概念,结合实际案例,帮助开发者更好地理解和应用这一强大工具,提升单页面应用的开发效率和用户体验。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
  • 深入掌握 React Hooks,让你的应用开发如虎添翼
    本文首发于政采云前端团队博客,详细探讨了 React Hooks 的核心概念与实用技巧。通过深入解析常见 Hooks 的使用场景和高级用法,帮助开发者在实际项目中更加灵活高效地运用 React Hooks,提升应用开发效率和代码可维护性。无论是初学者还是有经验的开发者,都能从中获得宝贵的知识和实践经验。 ... [详细]
  • ——pun的配置,以及实现头盔以及两个手柄的同步。下载完pun并导入后如图所示有这些东西,pun的介绍还是很清楚的,有很多demo可以学习,而且文档自带。很容易上手。首先,就是服务器的配置了。 ... [详细]
  • Redis概念
    Redis概念:redis是一款高性能的NOSQL系列的非关系型数据库什么是NOSQLNOSQL(NoSQLNotOnlySQL),意即不仅仅是SQL,是一项全新的数据库理念, ... [详细]
  • 用Python在Windows上安装MongoDB原文 ... [详细]
  • 一.升级mongo到4.0以上安装mongodb4.0参考了这篇文章步骤1:在终端输入GPK码sudoapt-keyadv--keyserverhkp:keyserver.ubun ... [详细]
  • 背景最近项目中用到了mongodb,并且用python的pymongo包操作。本文就把目前遇到的问题和学习经历做个小结,方便日后查询。Mongodb启动安装mongodbhttp ... [详细]
  • 怎么用Python来统计知识星球打卡作业
    本篇内容主要讲解“怎么用Python来统计知识星球打卡作业”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大 ... [详细]
  • Nmap端口检测与网络安全性评估
    Nmap 是一款强大的网络扫描工具,能够高效地进行主机发现、端口扫描和服务识别。它不仅能够检测网络中活跃的主机,还能详细列出这些主机上开放的端口及其对应的服务和版本信息。此外,Nmap 还具备操作系统指纹识别和硬件地址探测功能,为网络安全评估提供了全面的数据支持。 ... [详细]
  • 本文将深入探讨FastJSON的基础解析机制与自定义JSON处理技巧。通过详细分析FastJSON的核心功能和高级用法,帮助读者掌握高效、灵活的JSON数据处理方法。文中还将分享一些实用的代码示例和最佳实践,助力开发者在实际项目中更好地应用FastJSON。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
author-avatar
男人还是闷骚点好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有