②豆瓣top250电影评价人数统计柱状图
③Top250电影导演作品数top10统计柱状图
⑤Top250电影类型数量占比饼图
⑥Top250影片作品评分折线图
⑦Top250影片华语电影类型数量圆形图
⑧Top250影片作品上映年份统计柱状图
⑨2000年top250影片上映类型统计环形图
⑩Top250影片优秀演员参演统计漏斗图
Top250影片词云图
2019年评分最高华语电影top73D分析图
1.3项目采用的技术栈
使用软件:VisualStudioCode、JetBrainsPyCharm
采用技术:pyecharts、MongoDB、python第三方库
1.4项目借鉴源代码的地址
1.5团队成员任务分配表
陈佳萍
对爬取到的top250影片信息,实现top10导演作品数量、华语电影类别比重、统计2000年上映影片类型比重,并绘制环形图、top250影片作品评分折线图
吴琳琳
将豆瓣top250数据爬取信息并保存在Mongodb中、分析豆瓣top250电影类型数量占比、top20电影评分柱状图、以及上映年份统计图
肖茹云
豆瓣评价人数top20电影、生成华语前七星级获分对比三维柱状图、生成词云图
二、项目的需求分析
针对影视作品越来越多,层次不穷,通过对豆瓣top250影片爬取和分析,更加直观选择观看影片。
三、项目功能架构图、主要功能流程图
1.1功能架构图
图1功能架构图
1.2主要功能流程图
图2爬虫爬取
图3top10导演
图4三维柱形图
图5词云图
四、系统模块说明
1.1系统模块列表
图6项目结构图
1.2各模块详细描述(名称,功能,运行截图,关键源代码)
1、mvtop250.py:实现对豆瓣top250的影片信息爬取
1)构建递归循环,逐页爬取
2)建立Mongodb连接,用于数据保存
defget_movie_list(url,headers):
#实例化soup对象,便于处理
soup=requests.get(url,headers=headers)#向网站发起请求,并获取响应对象
response=BeautifulSoup(soup.text,'lxml')#利用xmlhtml解析器,具有容错功能
lists=response.select('div.info')
#循环获取信息
forlistinlists:
#获取影片名称
name=list.select('div.hd.title')[0].text
#导演及主演
type_list=list.select('div.bdp')[0].text.strip('').split('...')[-1].replace('','').split('/')
year=type_list[0]
#国家
country=type_list[1]
#影片所属类别
category=type_list[2]
#获取影片评分
star=list.select('div.bd.star.rating_num')[0].text.replace('','')
#获取引述
quote=list.select('div.bd.quote')[0].text
people_num=list.select('div.bd.starspan:nth-of-type(4)')[0].text.split('人')[0]
get_detail_movie(sing_url,name,year,country,category,star,quote,people_num,headers)
4)抓取top250电影的执导导演、参演演员,并保存数据到mongodb中
我们将获取到影片信息数据保存到数据库中,以便后面对数据的分析,效果如下:
2、Top250影片华语电影类型数量
效果如下:
3、top10导演.py:对爬取到的信息进行分类整理,统计作品数前10的导演,以及数据可视化
1)统计所有导演数量
2)统计作品数前10导演
3)绘制柱状图
4)效果如下
4、2000年上映影片类型比重
1)统计和提取2000年上映影片数量类型与华语上映电影类型相同,
2)绘制环形图
2)绘制柱状图
2)豆瓣top20评分情况
6、yanyuan.py:分析优秀演员参演作品数量
1)对获取到的演员列表进行分析
2)绘制漏斗图
7、作品上映年份统计以及折线图
1)作品上映年份统计
2)作品与评分折线图
根据爬取到的豆瓣影片信息生成的csv中读取数据生成折线图
8、top250影片词云图以及2019年评分最高华语电影top73D分析图
1)根据爬取到的豆瓣影片信息生成的csv中读取数据生成词云图
2)2019年评分最高华语电影top73D分析图
五、项目总结
5.1特点
利用不同的技术,实现爬取,数据保存,数据可视化。使用mongodb存放数据,利用pyecharts包实现数据可视化。使用render()渲染生成html文件后,创建index文件将所有渲染的html文件进行连接。
在原有的基础上,添加top250影片中华语上映影片类型数量圆形图、2000年上映影片类型数量环形图、top250上映影片年份统计图以及影片作品评分折线图、top250中评分top20影片柱状图;
同时新增2019年评分最高华语电影top73D分析图。
5.2不足之处
1.爬取数据数量有限。2.数据量大,爬取速度慢。3.无法识别链接重要程度,不能判断网页数据的价值程度。4.使用Mongodb作为数据存储,而不是用MySQL
5.在设计生成年份统计图中,x轴的年份参数出现重复值,并且图形超出x轴;在设计折线图中,由于数量过多,x轴数量挤在一起,影响可读性。