立即注册

乐视吧

查看: 191|回复: 10

【数据可视化】豆瓣电影TOP250数据可视化

[复制链接]

2

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-12-11 14:19:08 | 显示全部楼层 |阅读模式
豆瓣电影TOP250数据可视化
一、分析背景及目的
豆瓣对Top250电影的定义:豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影Top250。
本报告旨在对这250部电影(下称“好评电影”)的上映年代、制作国家、剧情类型、评分与排名关系进行分析,以期为电影制作方以及渴望寻找优秀电影观看的观影者对电影的选择提供若干参考建议。
并对2021年贺岁档电影《你好,李焕英》热评进行分析绘制词云图
二、数据的获取
1.找到豆瓣网站,豆瓣电影top250网https://movie.douban.com/top250
2. 根据网站的结构,使用python的requests库对网页进行请求,请求回来,完全是静态页面,
3. 使用lmxl库语法对html结构进行解析进行数据可视化
三、源程序清单
豆瓣电影TOP250
from bs4 import BeautifulSoup
from lxml import html
import xml
import requests
import json,os,csv
import io
def write_dictionary_to_csv(dict,filename):
    # file_name='{}.csv'.format(filename)
    file_exists = os.path.isfile(filename)
    with open(filename, 'a',encoding='utf-8') as f:
        # headers=dict.keys();
        w =csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator='\n',quoting=csv.QUOTE_ALL, skipinitialspace=True)
        if not file_exists :
            w.writeheader()
        w.writerow(dict)
    print('当前行写入csv成功!')
rank = 0
def write_one_page(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}

              html = requests.get(url, headers=headers).text
    # lxml:html解析库(把HTML代码转化成Python对象)
    soup = BeautifulSoup(html, 'lxml')
    global rank
    for k in soup.find('div',class_='article').find_all('div',class_='info'):
        name = k.find('div',class_='hd').find_all('span')#电影名字
        score = k.find('div',class_='star').find_all('span')#分数
        # inq = k.find('p',class_='quote').find('span')#一句话简介
        #抓取年份、国家
        actor_infos_html = k.find(class_='bd')
        #strip() 方法用于移除字符串头尾指定的字符(默认为空格)
        actor_infos = actor_infos_html.find('p').get_text().strip().split('\n')
        actor_infos1 = actor_infos[0].split('\xa0\xa0\xa0')
        director = actor_infos1[0][3:]
        role = actor_infos[1]
        year_area = actor_infos[1].lstrip().split('\xa0/\xa0')
        year = year_area[0]
        country = year_area[1]
        type = year_area[2]
        rank=rank+1
        print(rank,name[0].string,score[1].string,year,country,type)
        data={
        'rank':rank,
        'name':name[0].string,
        'score':score[1].string,
        'year':year,
        'country':country,
        'type':type
        # '评论信息':com2,《你好李焕英》影评分析爬取数据代码
#引用time库、random库、requests库、BeautifulSoup4
import time
import random
import requests
from bs4 import BeautifulSoup
def get_info(url):
    dict = {}
    UA = [
            "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
            "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",
            "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)",
            'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
            'Opera/9.25 (Windows NT 5.1; U; en)',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
            'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
            'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
            'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
            "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
            "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 "
        ]
    user_agent = random.choice(UA)
    #请求页面
    r = requests.get(url,headers={'User-Agent':user_agent})
    #创建BeautifulSoup对象
    soup = BeautifulSoup(r.text,'lxml')
    #找到所有的class属性为comment-item的标签
    comment_items = soup.select('.comment-item')
    #遍历所有符合要求的标签
    for comment_item in comment_items:
        #找到包含短评内容的标签
        shorts = comment_item.select('.short')
        #找到包含时间的标签
        times = comment_item.select('.comment-time')
        #遍历找到的标签
四、数据可视化
1. 豆瓣电影top250可视化
参与制作国家与地区图表


电影类型图表分析



评分与排名的联系情况



对电影评分进行分析



对电影产出年份进行分析



《你好,李焕英》热评词云图



五、总结
根据此前对豆瓣Top250影片的数据分析,本报告对电影制作方以及迷茫的观影者几点建议:
1、电影艺术是随着时代而转变的,大部分观影者更加接受于此时相近年代的电影,21世纪第一个十年内的电影是好评最多的时期。电影制作方可以选择10年前到20年前区间内的影片重制推出,用口碑吸引观影者。观影者也可以选择这期间的电影在休息时观看。
2、好的电影一般出自好的电影氛围,制作国家可以对影片造成影响。好评电影中,美国电影占到近一半。电影制作方或可借鉴学习美国电影的流行趋势,观影者可以选择美国电影来观看。
3、电影类型是观影者选择是否观看此影片的重要因素之一。“剧情”、“爱情”、“喜剧”是受众主流,电影制作方可以将其作为口碑的保守选择,观影者可以选择这些类型观看。这也可以从《你好,李焕英》这部热播电影看出。
长按二维码关注
如有任何问题
您可以发送邮件至
dataintellagr@126.com
或关注微博/知乎/微信后台留言
我们期待您的提问!
微博:数据智农
知乎:数据智农
邮箱:dataintellagr@126.com
制作:杨会会
回复

使用道具 举报

1

主题

46

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2022-12-11 14:43:11 | 显示全部楼层
1v1飘过
回复

使用道具 举报

0

主题

41

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2023-1-13 11:21:18 | 显示全部楼层
沙发???
回复

使用道具 举报

1

主题

50

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2023-1-16 12:02:56 | 显示全部楼层
不错 支持一个了
回复

使用道具 举报

1

主题

62

帖子

125

积分

注册会员

Rank: 2

积分
125
发表于 2023-2-7 08:23:50 | 显示全部楼层
我也顶起出售广告位
回复

使用道具 举报

0

主题

48

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2023-2-15 08:31:10 | 显示全部楼层
向楼主学习
回复

使用道具 举报

0

主题

61

帖子

121

积分

注册会员

Rank: 2

积分
121
发表于 2023-2-16 04:36:47 | 显示全部楼层
LZ是天才,坚定完毕
回复

使用道具 举报

2

主题

59

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2023-2-19 02:31:11 | 显示全部楼层
前排顶,很好!
回复

使用道具 举报

1

主题

62

帖子

124

积分

注册会员

Rank: 2

积分
124
发表于 2023-3-3 02:45:36 | 显示全部楼层
沙发???
回复

使用道具 举报

1

主题

47

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2023-3-16 09:37:47 | 显示全部楼层
向楼主学习
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋| 乐视吧

GMT+8, 2025-4-8 07:49 , Processed in 0.399844 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表