结果展示
目录详情
网页分析
发送请求
热评爬取
数据分析
可视化展示
网页分析
我们打开豆瓣短评,找到我们所要获取电影的短评列表。
网页F12打开浏览器开发者模式,找到如下
发送请求的真实链接:
数据是存储在一个json的数据集合里面的。
我们使用浏览器插件打开
我们要获取的图片信息都是在一个叫做html的列表里面。
老规矩,先获取json数据集。
发送请求
url=f'/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.%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.|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.|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'/subject/35427471/comments?start=20&limit=20&status=P&sort=new_score','User-Agent':str(UserAgent().random)}resp=requests.get(url,headers=headers)ifresp.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='votesvote-count']/text()")votes=''.join(vote).strip()#评论内容comment=div.xpath("./div[@class='comment']/p[@class='comment-content']/span[@class='short']/text()")comments=''.join(comment).strip()
数据提取如下:
春江一壶与君饮 -08-09 力荐 6744 5 这瓜保熟吗?我就问你这瓜保熟吗?爱的魔力转圈圈 -08-09 力荐 5231 5 那个死亡洒水车放的歌还是祝你平安。。。刘十九 -08-09 力荐 3666 5 能压住刘华强的,大概就是李丰田了,这选角绝了。前五集有点意思,剧情张弛有度,喜欢这黑色幽默的调调。Le Papillon -08-10 力荐 4225 5 张艺兴可以啊!进步很大wind又续期 -08-10 很差 1918 1 晕了 第一集就看见张艺兴在抠牙,太恶心了,谁办案要抠牙的…🤮挖掘机铲喷子 -08-10 还行 9609 3 开头很不错,但是。。。有些地方真的太浮夸了。比如张艺兴的油头,江疏影一个记者居然在警察局那么横,你俩好像和别的演员不是一个次元的凉三 -08-09 力荐 2851 5 中央督导组吃的自助餐,感觉很接地气,领导们之间如履薄冰、小心翼翼的试探非常写实。另外,孙红雷、宁理、刘奕君对手戏绝了,很有张力。PS.其实更想看孙红雷演反派tt@DEEP -08-09 推荐 6092 4 刘奕君演警察了哈哈,希望是个聪明的警察,要不然对不起你这些年演过那么多老奸巨猾的反派~kikioh -08-09 推荐 3971 4 编剧是亮剑的作者都梁诶肖申克的舅妈 -08-09 推荐 3463 4 因为孙红雷还有宁理来看的,两个实力派演员简直是这种犯罪悬疑片的扛把子。薛梅被撞、马帅在监狱被审问等镜头让我想起西楼尘写的“混凝土里的命如草芥的鱼肉,防火门内是声色犬马的乾坤”。小七 -08-12 还行 4656 3 把张艺兴和江疏影的戏份去掉会好很多。这两人太出戏了!LMCRC -08-09 推荐 2331 4 演员阵容非常强大,孙红雷宁理飙戏看的很过瘾,有时候文戏更能体现演员的功底,在牢狱里两人的聊天别有一番深意,既是过命的兄弟又藏着不想让对方知道的秘密,实在让人遐想不止浮影人生 -08-09 推荐 1936 4 王志飞老师竟然又演了个反派,太过瘾了。台词干脆利落,得知被查到十四年前的案件,就说了一句“掐掉”,效果足足的,果然是大佬既视感。Gore赞 -08-09 力荐 1747 5 奔着题材去看的,是真的没想到,惊喜连连,质感不输电影。而且全员演技在线,李成阳、何勇这两人一个眼神的交流,就擦出了火星子,预测这剧口碑低不了。飞扬跋扈 -08-11 还行 2702 3 张艺星刚吃完牛板筋吗 为什么总用手扣牙水浒三国金刚 -08-09 推荐 2041 4 剧情上来看,悬疑、犯罪、扫黑,就足以吊起观众的胃口,演员演技也不错,每个角色都是有灵魂的,尤其是宁理饰演的马帅,骨子里是个狠人,自残掰断手指来躲避审问,如果后面剧情不拉垮,是部值得推荐的好剧小熊爱吃曲奇 -08-10 很差 1868 1 太悬浮了,国产剧编剧真的不行✋。当红小花胡仙絮 -08-10 力荐 1992 5 看了五集忍不住打分,太精彩了,各位看到没有,以后都给我接这种剧本的剧,老戏骨飙戏太精彩了,张艺兴这次演的不错,真敢拍啊,太敢拍了屠龙胭脂 -08-13 还行 1297 3 张艺兴和江疏影仿佛跟其他的演员不在一部剧里
多页爬取
多页数据分析的时候最简单的方法就是观察并分析多页连接的区别,如下:
/subject/35202793/comments?percent_type=&start=20&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9/subject/35202793/comments?percent_type=&start=40&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9/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'/subject/35202793/comments?percent_type=&start={(page-1)*20}&limit=20&status=P&sort=new_score&comments_only=1'
接下来我们就可以获取多页数据啦
forpageinrange(1,25+1):print(f'-----------------正在抓取第{page}页影评-----------------')url=f'/subject/35202793/comments?percent_type=&start={(page-1)*20}&limit=20&status=P&sort=new_score&comments_only=1'.....
数据存储
我们将获取到的数据存储到本地的excel之中,之前我有专门拉出来详细讲过,有兴趣的小伙伴可以参考
我是如何把python爬虫获取到的数据写入Excel的?
我们这里使用的是第一种,使用openpyxl来保存数据
#创建workbookws=op.Workbook()#创建worksheetwb=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=2wb.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+=1print(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="fabfa-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)
我就不在此做其他项的可视化分析了,反正数据已经给你们了对吧!
总结
至此,《扫黑风暴》的豆瓣短评分析可视化就完成啦~~~
从分析可以看出,电视剧的整体口碑还是很不错的,
最难得在于除了好看之外,它还让观众深吸一口凉气。剧情中展现的案件,是经过中央政法委筛选而出的。
而剖开细节,深入好看和大尺度背后,还有一层信仰,才真正卷起观众心里的风暴。
为中国反贪扫黑点赞!!!
有问题的小伙伴们欢迎下方留言讨论哈~