一、项目简介

1.1 项目博客地址


1.2 项目完成的功能与特色

利用爬虫对豆瓣评分top250的电影进行爬取,获取电影相关信息,并对获取到的数据进行数据分析。通过数据可视化,将数据具体化更加直观地了解电影信息。实现的模块功能有:

① 抓取top250电影的上映时间、国家、评分、类型、评价人数、导演、参演演员信息;

② 豆瓣top250电影评价人数统计柱状图

③ Top250电影导演作品数top10统计柱状图

④ Top250电影中评论top20统计柱状图

⑤ Top250电影类型数量占比饼图

⑥ Top250影片作品评分折线图

⑦ Top250影片华语电影类型数量圆形图

⑧ Top250影片作品上映年份统计柱状图

⑨ 2000年top250影片上映类型统计环形图

⑩ Top250影片优秀演员参演统计漏斗图

⑪ Top250影片词云图

 2019年评分最高华语电影top7 3D分析图

1.3 项目采用的技术栈

使用软件:Visual Studio Code、JetBrains PyCharm

采用技术:pyecharts、MongoDB、python第三方库

  1.4 项目借鉴源代码的地址

python爬虫—豆瓣电影top250及数据可视化  https://www.jianshu.com/p/deaf10d4fd9b

1.5团队成员任务分配表

陈佳萍

对爬取到的top250影片信息,实现top10导演作品数量、华语电影类别比重、统计2000年上映影片类型比重,并绘制环形图、top250影片作品评分折线图

吴琳琳

将豆瓣top250数据爬取信息并保存在Mongodb中、分析豆瓣top250电影类型数量占比、top20电影评分柱状图、以及上映年份统计图

肖茹云

豆瓣评价人数top20电影、生成华语前七星级获分对比三维柱状图、生成词云图

二、项目的需求分析

针对影视作品越来越多,层次不穷,通过对豆瓣top250影片爬取和分析,更加直观选择观看影片。

三、项目功能架构图、主要功能流程图

1.1 功能架构图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化

 

 图1  功能架构图

1.2 主要功能流程图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_02

 

 图2 爬虫爬取

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_03

 

 

 图3 top10导演

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_04

 图4 三维柱形图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_05

图5 词云图

 

 

 四、系统模块说明

   1.1 系统模块列表

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_06

 图6 项目结构图

   1.2 各模块详细描述(名称,功能,运行截图,关键源代码)

1、mvtop250.py :实现对豆瓣top250的影片信息爬取

1) 构建递归循环,逐页爬取

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_07

 

2) 建立Mongodb连接,用于数据保存

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_08

3) 抓取top250电影的上映时间、国家、评分、类型、评价人数

def get_movie_list(url,headers):

实例化soup对象, 便于处理

向网站发起请求,并获取响应对象

利用xml html解析器,具有容错功能

    lists = response.select('div.info')

循环获取信息

    for list in lists:

获取链接, 也就是获取a链接中href对应的值;

        sing_url =list.select('a')[0].get('href')

获取影片名称

        name =list.select('div.hd .title')[0].text

导演及主演

        type_list = list.select('div.bd p')[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

获取评论人数

人')[0]

        get_detail_movie(sing_url,name,year,country,category,star,quote,people_num,headers)

 

4) 抓取top250电影的执导导演、参演演员,并保存数据到mongodb中

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_09

我们将获取到影片信息数据保存到数据库中,以便后面对数据的分析,效果如下:

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_10

2、Top250影片华语电影类型数量

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_11

 

 

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_12

效果如下:

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_13

3、top10导演.py :对爬取到的信息进行分类整理,统计作品数前10的导演,以及数据可视化

1)统计所有导演数量

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_14

2)统计作品数前10导演

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_15

3)绘制柱状图

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_16

4)效果如下

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_17

 

4、2000年上映影片类型比重

1)统计和提取2000年上映影片数量类型与华语上映电影类型相同,

2)绘制环形图

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_18

效果如下:

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_19

5、评论人数分析、以及Top250电影中评论top20统计图

1)对爬取的影片评论人数进行分析

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_20

2)绘制柱状图

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_21

 

效果如下:

1)豆瓣top20电影评论人数

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_22

2)豆瓣top20评分情况

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_23

 

 

6、yanyuan.py:分析优秀演员参演作品数量

1)对获取到的演员列表进行分析

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_24

 

2)绘制漏斗图

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_25

 

效果如下:

 

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_折线图_26

 7、作品上映年份统计以及折线图

1)作品上映年份统计

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_27

2)作品与评分折线图

根据爬取到的豆瓣影片信息生成的csv中读取数据生成折线图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_28

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_29

 

 

 8、top250影片词云图以及2019年评分最高华语电影top7 3D分析图

1)根据爬取到的豆瓣影片信息生成的csv中读取数据生成词云图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_30

 

 

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_31

 

 效果如下:

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_数据可视化_32

 

 2)2019年评分最高华语电影top7 3D分析图

基于电影数据的爬取与可视化中机器学习模块 电影数据分析可视化_柱状图_33

 

 

五、项目总结

 5.1 特点

利用不同的技术,实现爬取,数据保存,数据可视化。使用mongodb存放数据,利用pyecharts包实现数据可视化。使用 render() 渲染生成html文件后,创建index文件将所有渲染的html文件进行连接。

在原有的基础上,添加top250影片中华语上映影片类型数量圆形图、2000年上映影片类型数量环形图、top250上映影片年份统计图以及影片作品评分折线图、top250中评分top20影片柱状图;

同时新增2019年评分最高华语电影top7 3D分析图。

 5.2 不足之处

1.爬取数据数量有限。
2.数据量大,爬取速度慢。
3.无法识别链接重要程度,不能判断网页数据的价值程度。
4.使用Mongodb作为数据存储,而不是用MySQL

5.在设计生成年份统计图中,x轴的年份参数出现重复值,并且图形超出x轴;在设计折线图中,由于数量过多,x轴数量挤在一起,影响可读性。