结果展示
目录详情
网页分析
发送请求
热评
数据分析
可视化展示
网页分析
我们打开豆瓣短评,找到我们所要获取电影的短评列表。
网页F12打开浏览器开发者模式,找到如下
发送请求的真实链接:
数据是存储在一个json的数据集合里面的。
我们使用浏览器插件打开
我们要获取的图片信息都是在一个叫做html的列表里面。
老规矩,先获取json数据集。
发送请求
url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1' print(url) headers = { 'Cookie': 'bid=Hgm5jLcvu9M; dbcl2="153819075:MtvprK7V/38"; ck=8_y9; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1629936489%2C%22https%3A%2F%2Fopen.weixin.qq.com%2F%22%5D; _pk_ses.100001.4cf6=*; __utma=30149280.232591547.1629936489.1629936489.1629936489.1; __utmb=30149280.0.10.1629936489; __utmc=30149280; __utmz=30149280.1629936489.1.1.utmcsr=open.weixin.qq.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=223695111.1326858547.1629936489.1629936489.1629936489.1; __utmb=223695111.0.10.1629936489; __utmc=223695111; __utmz=223695111.1629936489.1.1.utmcsr=open.weixin.qq.com|utmccn=(referral)|utmcmd=referral|utmcct=/; push_noty_num=0; push_doumail_num=0; _vwo_uuid_v2=D8A1AD86A68FA87DAC0208F74852EA234|8c77aabd1c4b456acb80f56ce1913302; _pk_id.100001.4cf6=18e2fa2e664ebce9.1629936489.1.1629936615.1629936489.', f'Referer': f'https://movie.douban.com/subject/35427471/comments?start=20&limit=20&status=P&sort=new_score', 'User-Agent': str(UserAgent().random) } resp = requests.get(url, headers=headers) if resp.status_code == requests.codes.ok: text = resp.json()['html'] print(text)
成功获取到浏览器响应之后我们接下来获取每一部电影的
评分作者、评分时间、评分和评论等
# 姓名 cmt_name = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/a/text()") cmt_names = ''.join(cmt_name).strip() # 评论时间 cmt_time = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[@class='comment-time ']/text()") cmt_times = ''.join(cmt_time).strip() # 星评 star = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[2]/@title") stars = ''.join(star).strip() # 评分 score = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[2]/@class") scores = ''.join(score).strip(' ')[7:8] # 赞同人数 vote = div.xpath("./div[@class='comment']/h3/span[@class='comment-vote']/span[@class='votes vote-count']/text()") votes = ''.join(vote).strip() # 评论内容 comment = div.xpath("./div[@class='comment']/p[@class=' comment-content']/span[@class='short']/text()") comments = ''.join(comment).strip()
数据提取如下:
春江一壶与君饮 2021-08-09 力荐 6744 5 这瓜保熟吗?我就问你这瓜保熟吗? 爱的魔力转圈圈 2021-08-09 力荐 5231 5 那个死亡洒水车放的歌还是祝你平安。。。 刘十九 2021-08-09 力荐 3666 5 能压住刘华强的,大概就是李丰田了,这选角绝了。前五集有点意思,剧情张弛有度,喜欢这黑色幽默的调调。 Le Papillon 2021-08-10 力荐 4225 5 张艺兴可以啊!进步很大 wind又续期 2021-08-10 很差 1918 1 晕了 第一集就看见张艺兴在抠牙,太恶心了,谁办案要抠牙的…🤮 挖掘机铲喷子 2021-08-10 还行 9609 3 开头很不错,但是。。。有些地方真的太浮夸了。比如张艺兴的油头,江疏影一个记者居然在警察局那么横,你俩好像和别的演员不是一个次元的 凉三 2021-08-09 力荐 2851 5 中央督导组吃的自助餐,感觉很接地气,领导们之间如履薄冰、小心翼翼的试探非常写实。另外,孙红雷、宁理、刘奕君对手戏绝了,很有张力。PS.其实更想看孙红雷演反派 tt@DEEP 2021-08-09 推荐 6092 4 刘奕君演警察了哈哈,希望是个聪明的警察,要不然对不起你这些年演过那么多老奸巨猾的反派~ kikioh 2021-08-09 推荐 3971 4 编剧是亮剑的作者都梁诶 肖申克的舅妈 2021-08-09 推荐 3463 4 因为孙红雷还有宁理来看的,两个实力派演员简直是这种犯罪悬疑片的扛把子。薛梅被撞、马帅在监狱被审问等镜头让我想起西楼尘写的“混凝土里的命如草芥的鱼肉,防火门内是声色犬马的乾坤”。 小七 2021-08-12 还行 4656 3 把张艺兴和江疏影的戏份去掉会好很多。这两人太出戏了! LMCRC 2021-08-09 推荐 2331 4 演员阵容非常强大,孙红雷宁理飙戏看的很过瘾,有时候文戏更能体现演员的功底,在牢狱里两人的聊天别有一番深意,既是过命的兄弟又藏着不想让对方知道的秘密,实在让人遐想不止 浮影人生 2021-08-09 推荐 1936 4 王志飞老师竟然又演了个反派,太过瘾了。台词干脆利落,得知被查到十四年前的案件,就说了一句“掐掉”,效果足足的,果然是大佬既视感。 Gore赞 2021-08-09 力荐 1747 5 奔着题材去看的,是真的没想到,惊喜连连,质感不输电影。而且全员演技在线,李成阳、何勇这两人一个眼神的交流,就擦出了火星子,预测这剧口碑低不了。 飞扬跋扈 2021-08-11 还行 2702 3 张艺星刚吃完牛板筋吗 为什么总用手扣牙 水浒三国金刚 2021-08-09 推荐 2041 4 剧情上来看,悬疑、犯罪、扫黑,就足以吊起观众的胃口,演员演技也不错,每个角色都是有灵魂的,尤其是宁理饰演的马帅,骨子里是个狠人,自残掰断手指来躲避审问,如果后面剧情不拉垮,是部值得推荐的好剧 小熊爱吃曲奇 2021-08-10 很差 1868 1 太悬浮了,国产剧编剧真的不行✋。 当红小花胡仙絮 2021-08-10 力荐 1992 5 看了五集忍不住打分,太精彩了,各位看到没有,以后都给我接这种剧本的剧,老戏骨飙戏太精彩了,张艺兴这次演的不错,真敢拍啊,太敢拍了 屠龙胭脂 2021-08-13 还行 1297 3 张艺兴和江疏影仿佛跟其他的演员不在一部剧里
多页
多页数据分析的时候最简单的方法就是观察并分析多页连接的区别,如下:
https://movie.douban.com/subject/35202793/comments?percent_type=&start=20&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9 https://movie.douban.com/subject/35202793/comments?percent_type=&start=40&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9 https://movie.douban.com/subject/35202793/comments?percent_type=&start=60&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9
观察此链接除了start参数之外都没有变化,其实这个start参数就是控制翻页的。
它的变化规律就是(page-1)*20,据此我们可以构造出它的请求链接
url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'
接下来我们就可以获取多页数据啦
for page in range(1, 25 + 1): print(f'-----------------正在抓取第{page}页影评-----------------') url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1' .....
数据存储
我们将获取到的数据存储到本地的excel之中,之前我有专门拉出来详细讲过,有兴趣的小伙伴可以参考
我是如何把python获取到的数据写入Excel的?
我们这里使用的是第一种,使用openpyxl来保存数据
# 创建workbook ws = op.Workbook() # 创建worksheet wb = ws.create_sheet(index=0) # 创建表头 wb.cell(row=1, column=1, value='作者') wb.cell(row=1, column=2, value='时间') wb.cell(row=1, column=3, value='星评') wb.cell(row=1, column=4, value='评分') wb.cell(row=1, column=5, value='赞同') wb.cell(row=1, column=6, value='评论') count = 2 wb.cell(row=count, column=1, value=cmt_names) wb.cell(row=count, column=2, value=cmt_times) wb.cell(row=count, column=3, value=stars) wb.cell(row=count, column=4, value=scores) wb.cell(row=count, column=5, value=votes) wb.cell(row=count, column=6, value=comments) count += 1 print(cmt_names, cmt_times, stars, votes, scores, comments) ws.save('扫黑风暴.xlsx')
词云展示
为了更加直观的展示电影所述,我一般都是使用词云来做直观的展示。
我们使用的是stylecloud。
使用pandas来读取我们刚才保存的数据。
使用jieba来切割分词
使用stopwords来设置停用词
有兴趣的小伙伴详情可以参考
如何使用python实现一个优雅的词云?(超详细)
rcv_data = pd.read_excel('你好,火焰蓝短评.xlsx') c_title = rcv_data['评论'].tolist() #观影评论词云图 wordlist = jieba.cut(''.join(c_title)) result = ' '.join(wordlist) pic = 'img1.jpg' gen_stylecloud(text=result, icon_name="fab fa-apple", font_path='msyh.ttc', background_color="white", output_name=pic, custom_stopwords= ['了', '的', '是', '也'] ) print('绘图成功!')
最终效果展示如下:
评分可视化分析
首先我们使用pandas读取数据统计各评分出现频次
# 读取数据 pd_data = pd.read_excel('./扫黑风暴.xlsx') score = pd_data['评分'].value_counts() ''' ['4', '5', '3', '2', '1', '-'] [143, 104, 103, 76, 64, 10] '''
然后使用图形可视化数据
从图中可以看出,大家对这部剧的认可之还是相当高的
没有看过的小伙伴还是值得去刷一刷的
点赞最多评论
我们来看一看点赞最多的评论到底说了什么?
# 读取数据 pd_data = pd.read_excel('./扫黑风暴.xlsx') pd.set_option('display.max_columns', None) # 显示完整的列 pd.set_option('display.max_rows', None) # 显示完整的行 pd.set_option('display.expand_frame_repr', False) # 设置不折叠数据 # 最多播放 max_score = pd_data[pd_data['赞同'] == pd_data['赞同'].max()] print(max_score)
我就不在此做其他项的可视化分析了,反正数据已经给你们了对吧!
总结
至此,《扫黑风暴》的豆瓣短评分析可视化就完成啦~~~
从分析可以看出,电视剧的整体口碑还是很不错的,
最难得在于除了好看之外,它还让观众深吸一口凉气。剧情中展现的案件,是经过中央政法委筛选而出的。
而剖开细节,深入好看和大尺度背后,还有一层信仰,才真正卷起观众心里的风暴。
为中国反贪扫黑点赞!!!
有问题的小伙伴们欢迎下方留言讨论哈~