课程大作业
一、研究背景 1
二、豆瓣电影功能设计 2
三、豆瓣电影功能实现 3

一、研究背景
1.1 背景
省略了

二、豆瓣电影功能设计
2.1
一:收集信息功能设计
(1)获取数据
用python爬取豆瓣排行榜250的影片信息,包括影片排行名次、影片名字、影片导演、影片主演、影片上映年份、影片所属地区、影片类型、影片评分、影片评价人数、影片短评。爬取每部影片对应图片,并命名为影片名字。

(2)将数据存入mongodb
将影片信息命名为“豆瓣Top250.csv”,将CSV文件导入mongodb,运用第十章第一节数据的导入导出知识点。

(3)数据展示
查询数据是否存入mongodb数据库中,运用第二章查询语言系统知识点。

二:信息管理功能设计
(1)python连接mongodb数据库。

(2)对数据进行增删查改操作,运用第四章增改删操作知识点。

(3)对数据进行分析,分析用户喜欢的电影和电影评分等信息,运用第六章聚集分析知识点。

(4)对分析所得数据进行复制集操作,运用第七章复制集知识点。

(5)文件上传与下载,运用第九章分布式文件存储系统知识点。

(6)对数据库进行备份,运用第十章管理与监控知识点。

三:信息展示功能设计
(1)网页搭建

使用Adobe Dreamweaver CS5写html文件
html文件包括:
index.html:网站主页
Grid.html:网站主体部分,显示排名较前的电影信息
Single-post.html:网站影片分析结果展示
About.html:网站其他内容,关于影片的一些信息,比如排行榜的由来、联系电话、电影其他信息。
网站中有按钮,让用户点击可以跳转到其他页面,用于界面切换。

(2)用户查看电影信息,分析结果展示

用户点开网址,即可看到网站信息。主界面为排名前几的影片及影片信息,包括影片名字和影片短评。
主界面中有个按钮,可以跳转到其他页面。当用户想要跳转界面了解其他信息时,可以点击此按钮。跳转界面包括主页,全部内容,关于我们和影片分析。其中主页为用户打开页面呈现内容,全部内容为排行榜前四十的影片内容,关于我们为与影片相关内容,影片分析为运用python和mongodb对数据进行分析结果的展示页面。
若用户想要联系网站,有个按钮,用户点击按钮跳出发送邮件界面,用户输入用户名和用户邮件地址和邮件内容,点击下方按钮即可发送邮件给网站。

三、豆瓣电影功能实现
3.1 运行环境
Python3 、mongodb 、windows10、Adobe Dreamweaver CS5
3.2 具体实现
一、收集信息功能实现
(1)python爬取数据主要代码,代码文件为“爬虫豆瓣Top250.py”

for li in lis:name = li.xpath(".//a/span[@class='title'][1]/text()")[0]
director_actor="".join(li.xpath(".//div[@class='bd']/p/text()[1]")[0].replace(' ','').replace('\n','').replace('/','').split())
info="".join(li.xpath(".//div[@class='bd']/p/text()[2]")[0].replace(' ','').replace('\n','').split())
rating_score=li.xpath(".//span[@class='rating_num']/text()")[0]
rating_num=li.xpath(".//div[@class='star']/span[4]/text()")[0]
introduce = li.xpath(".//p[@class='quote']/span/text()")
if introduce:movie = {'name': name, 'director_actor': director_actor, 'info': info, 'rating_score': rating_score, 'rating_num': rating_num, 'introduce': introduce[0]else:movie = {'name': name, 'director_actor': director_actor, 'info': info, 'rating_score': rating_score,'rating_num': rating_num, 'introduce': None}imgurl = li.xpath(".//img/@src")[0]movies.append(movie)imgurls.append(imgurl)

(2)导入数据库

(3)数据展示
使用查询语句,查看数据库中数据是否导入成功,例如查找影片名为“肖申克的救赎”。

二:信息管理功能实现
(1)将python与mongodb连接,让python操作mongodb数据库。运用第九章分布式文件存储系统知识点中的连接数据库知识点。

from pymongo import MongoClient
#1.连接本地数据库服务
myclient=MongoClient('mongodb://localhost:27017/')
#2.连接本地数据库
db=myclient.test
#3.创建集合
collection=db.douban

(2)对数据进行增删查改操作,运用第二章查询知识点和第四章增改删操作知识点。
1.删除语句操作:csv文件导入到数据库时,第一行的无效数据导入了数据库中,将无效数据进行删除。
result = collection.delete_one({‘name’:‘name’ })
print(result)
将数据删除后查询无效数据是否存在,若不存在则删除成功。由图可知,无效数据已被成功删除。

2.插入语句操作:插入新的影片信息“天气之子”,包括影片名字、影片导演、影片主演、影片上映年份、影片所属地区、影片类型、影片评分、影片评价人数、影片短评。

douban = {'_id': 250,'name': '天气之子','director_actor': '导演:新海诚 主演:醍醐虎汰朗','info':'2019/爱情/动画/奇幻','rating_score':7.1,'rating_num':'191148人评价','introduce': '拥有改变天气的其妙能力'
}
result = collection.insert_one(douban)
print(result)

  1. 修改语句操作:影片名为“肖申克的救赎”信息更新,评价人数由2040900变为2043207
condition = {'name': '肖申克的救赎'}
douban = collection.find_one(condition)
douban['rating_num'] = '2043207人评价'
result = collection.update_one(condition, {'$set':douban})
print(result)

由图可知信息更新完成

  1. 查询语句操作:查询排行榜前三名影片信息,分析排行高的原因。
results=collection.find({'_id':{'$lt':3}})
print(results)
for result in results:
print(result)

分析:
排行榜前三名影片为“肖申克的救赎”、“霸王别姬”、“阿甘正传”。这三部影片都是在九十年代产生,距今已经二十多年。这三部都属于经典影片,都是一个时代的缩影。这三部电影的演员在当时都是有名的影视演员,比如张国荣先生。可见观众比较喜欢的是经典影片,而不是比较当下比较有名的电影。

(3)对数据进行分析。运用第六章聚集分析知识点。
1.运用管道模式,将数据按照rating_score降序排列

cursor = db.douban.aggregate([{"$sort":{"rating_score":-1}}])
for document in cursor:print(document)

分析:
将电影按照评分进行降序排序,可以发现评分排名和排行榜排名不一致,所以评分高的电影排行榜名次不一定高,排行榜名次高也不代表电影评分高,这两者没有必然的联系。
对所属国家分类,可以发现评分较高的前十部的影片中,其中美国占比最大,有五部电影分别为:肖申克的救赎、控方证人、阿甘正传、辛德勒的名单、忠犬八公的故事。剩下的影片中其他国家相差不大,都有一两部上榜。中国大陆有一部电影为霸王别姬,意大利有一部电影为美丽人生。日本有两部电影为人生果实和千与千寻。法国有一部电影为这个杀手不太冷。
通过对影片所属国家的分析,可以看出人们普遍喜欢看美国的电影,评分最高的是“肖申克的救赎”,这部电影的主题是“对希望和自由的向往”,当今时代不可缺少的就是对自由、希望的向往,此电影也代表了人类对自由的渴望。

2.运用管道模式,统计不同评分个数

for i in range(0,15,1):j=0.1*i+8.3k=round(j,1)cursor=db.douban.aggregate([{"$match":{"rating_score":k}}]
)count=0    for document in cursor:#print(document)count=count+1print(k)print(count)

分析:
通过结果可知8.3分1个,8.4分4个,8.5分14个,8.6分27个,8.7分41个,8.8分44个,8.9分30个,9.0分21个,9.1分20个,9.2分23个,9.3分13个,9.4分5个,9.6个2个,9.7分1个。通过数据可知影片评分类似服从正态分布,高分和低分影片数量较少,影片数量较多集中评分中间。

  1. 运用简单聚集函数,获取影片info信息
cursor=db.douban.distinct("info")
for document in cursor:
print(document)

分析:
影片类型中出现最多的是“犯罪/惊悚/悬疑”,可以发现观众比较喜欢看的电影类型是犯罪悬疑片,其次较多的是“爱情/喜剧”和“科幻/冒险”。一般犯罪悬疑片给人以紧张感,出现案件一步步进行破案,有时剧情还会不断反转,紧扣观众的视线有让观众看下去的欲望,所以犯罪悬疑片更得观众喜爱。

4.运用简单聚集函数,获取影片评分信息

cursor=db.douban.distinct("rating_score")
for document in cursor:
print(document)

分析:
影片评分集中分布在8.3到9.7之间,说明Top250榜中电影评分最低为8.3分,最高为9.7分。

5.运用简单聚集函数,获取影片短评。将影片短评信息保存在“豆瓣短评.pdf”文件中,用于文件上传下载。

cursor=db.douban.distinct("introduce")
for document in cursor:print(document)

分析:
每部影片的短评都描述了电影的特征或者电影所获得的成就,例如“风华绝代”、“香港浪漫主义警匪动作片的巅峰之作”。影片短评是概述电影最重要的东西,看到短评大概就知道电影主要描写了什么,或者电影讲了什么故事,电影获得了哪些成就。一部电影的短评是浓缩了电影的精华而形成的,通过短评就可以看出电影的价值所在,

(4)对分析得出的数据进行复制集操作
1.创建复制集中每个节点存放数据的目录、每个节点的日志文件、每个节点启动时所需的配置文件,创建复制集添加节点。

2.将排名前三的影片信息插入到复制集中,查看数据是否同步

(5)文件上传与下载
将分析保存的“豆瓣短评.pdf”文件信息上传到数据库中。将数据库中的“豆瓣短评.pdf”文件下载到本地。代码为:”文件上传下载豆瓣短评.py”

(6)对数据进行备份

查看数据是否备份成功:

三:信息展示功能实现
(1)网站搭建实现
第一步:新建文件夹“网站搭建成果展示”,将数据放入文件夹中,主要包括html文件、影片图片信息、网站搭建所需的css、fonts、imge、js等文件信息。
第二步:编写html文件
1.Index.html主页面编写内容:

<h1>Welcome to <em>douban</em></h1><p>一部电影 一部人生</p><p>每一部电影都让我们好像经历了另一种不同的人生,这是一种安全的奇妙的感觉。</p>
  1. Grid.html页面:主要内容为排名前40的电影信息
    例如:
    <a href="imge/肖申克的救赎.jpg"
data-lightbox="image-1"><div class="hover-effect"><div class="hover-content"><h1>肖申克的 <em>救赎</em></h1><p>希望让人自由</p></div></div></a><div class="image"><img src="imge/肖申克的救赎.jpg" width="70%" height="500">
  1. single-post.html页面:电影分析结果展示
    主要代码展示:
<li><a href="#">> 美国(5)部</a></li>
<li><a href="#">> 日本(2)部</a></li>
<li><a href="#">> 中国(1)部</a></li>
<li><a href="#">> 法国(1)部</a></li>
<li><a href="#">> 意大利(1)部</a></li><br>阿甘正传</p><p>阿甘(汤姆·汉克斯 饰)于二战结束后不久出生在美国南方阿拉巴马州一个闭塞的小镇,他先天弱智,智商只有75,然而他的妈妈是一个性格坚强的女性,她常常鼓励阿甘&ldquo;傻人有傻福&rdquo;,要他自强不息。 <br>阿甘像普通孩子一样上学,并且认识了一生的朋友和至爱珍妮(罗宾·莱特·潘 饰),在珍妮和妈妈的爱护下,阿甘凭着上帝赐予的&ldquo;飞毛腿&rdquo;开始了一生不停的奔跑。 <br>阿甘成为橄榄球巨星、越战英雄、乒乓球外交使者、亿万富翁,但是,他始终忘不了珍妮,几次匆匆的相聚和离别,更是加深了阿甘的思念。 <br>有一天,阿甘收到珍妮的信,他们终于又要见面……<br><br>
  1. About.html页面:关于电影的一些其他信息
    主要代码:
<div class="more-about-us"><div class="container"><div class="col-md-5 col-md-offset-7"><div class="content"><h2>电影的魅力</h2><p>我们的人生太短,电影能把我们的人生延长好几倍。<br>经历一个未知的世界,体验一种全新的生活,感受一次心灵的穿越。</p>

(2)网站分析结果展示
1.single-post.html页面:电影分析结果展示
进入网站点击右上角按钮,找到“影片分析”选项,点击进入。用户即可看到前十排行榜国家比例、排行榜前三名信息

用户向下滑动,可以看到豆瓣Top250榜单前三电影剧情简介、热门短评以及评分个数统计等信息。

用户对网站若有意见,可以发送邮件,点击网站右下角信息图标,即可出现“Say hello to yourshelf”界面,用户可以通过此界面向网站写邮件。

  1. Index.html主页面展示
    用户打开网址界面呈现:

用户向下滑动,查看排名前九的影片信息

当用户用鼠标触碰到影片时,出现影片短评。例如触碰“千与千寻”,出现影评“最好的宫崎骏,最好的久石让”。

当用户点击影片信息时,弹出影片图片,图片左右有按钮,点击按钮可以左右切换查询图片。

  1. grid.html页面展示:
    此页面通index.html页面相似,不同于index.html页面有九部影片信息,而grid.html页面有40部影片信息,此页面影片信息较为全面。

  1. about.html页面展示
    点击页面右上角按钮,找到“关于我们”按钮,点击进入。主页标题为相关咨询,下方分为六个小标题,可让用户查看相关资讯。

用户向下滑动,可以看到大标题“电影的魅力”。

Mongodb实战:豆瓣电影排行榜分析及结果展示设计相关推荐

  1. ML之NB、LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类

    ML之NB.LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类 注:LoR code waiting 目录 输出结果 核心代码 输出结果 数据集:Dat ...

  2. xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验

    影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...

  3. python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...

    豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...

  4. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  5. JAVA爬虫(一):豆瓣电影排行榜爬取

    JAVA爬虫(一):豆瓣电影排行榜爬取 前言 流程图 步骤 一.爬取豆瓣电影榜单网页源代码 二.网页源码解析 三.爬取单个电影网页源码 四.源代码解析及关键信息获取 前言 最近和大创队友一起给大创做的 ...

  6. python爬虫实例教程之豆瓣电影排行榜--python爬虫requests库

    我们通过requests库进行了简单的网页采集和百度翻译的操作,这一节课我们继续进行案例的讲解–python爬虫实例教程之豆瓣电影排行榜,这次的案例与上节课案例相似,同样会涉及到JSON模块,异步加载 ...

  7. 爬虫实战——豆瓣电影Top250

    爬虫实战--豆瓣电影Top250 准备阶段 网页分析 在目标网页直接ctrl+u查看网页源代码(或者F12审查),豆瓣的网页源代码就出现了(非常友好): <!DOCTYPE html> & ...

  8. [爬虫] 爬取豆瓣电影排行榜

    申明:本文对爬取的数据仅做学习使用,不涉及任何商业活动,侵删 爬取豆瓣电影排行榜 这是一个Scrapy框架入门级的项目, 它可以帮助我们基本了解Scrapy的操作流程和运行原理 这次我们要做例子的网站 ...

  9. NLP之TEA之NB/LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类

    NLP之TEA之NB/LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类 注:LoR code waiting 目录 输出结果 核心代码 输出结果 数据 ...

  10. python大规模获取豆瓣影评_python爬取豆瓣电影排行榜(requests)

    ''' 爬取豆瓣电影排行榜 设计思路: 1.先获取电影类型的名字以及特有的编号 2.将编号向ajax发送get请求获取想要的数据 3.将数据存放进excel表格中 ''' 环境部署: 软件安装: 模块 ...

最新文章

  1. c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...
  2. 殇-至吾爱 ---经典
  3. a eraser eraser还是an_eraser前面用a还是an
  4. mysql从oracle取数_Oracle通过过程定期取数
  5. pat 1025 反转链表
  6. MS SQLService中的*= 及 =*
  7. B - Beautiful Paintings
  8. OpenPose Demo
  9. html img的点击事件,js给img添加点击事件无效
  10. 抖音5×5一笔连线问题无解的证明
  11. sklearn中精确率、召回率及F1值得micro,macro及weighted算法
  12. 在Elasticsearch中回测隨機(Stochastic)指標交叉交易策略
  13. 将阿拉伯数字转换成汉字数字(小写)
  14. 初学者在VMware上搭建自己的CentOS8
  15. 缺少包含@author的注释信息解决方法
  16. 什么是HTTP状态码?网络状态下的常见码状态介绍
  17. java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计
  18. cookie、seesionStorage、localStoreg的区别
  19. android刷机知识大全,安卓主流机型刷机基础科普 教你刷机不求人
  20. 【Linux 内核】CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )

热门文章

  1. 东南计算机专硕和学硕,问了200个学长学姐,终于知道专硕学硕的“差别”
  2. Eclipse常用插件推荐
  3. Ps简单的墨笔画制作
  4. Java流系列(三):数据流、缓存流
  5. VGA高速PCB布局布线设计指南
  6. 字节跳动做教育能否摆脱互联网公司“流量魔咒”?
  7. VS2015基于对话框的MFC倒计时器
  8. 小知识:什么是HotFix?HotFix安装步骤及注意事项
  9. matlab plotyy 横坐标,MATLAB中plotyy函数详解:matlab双Y轴作图
  10. python爬虫qq音乐歌词_Python如何爬取qq音乐歌词到本地