“一起去爬山吧?”
这句台词火爆了整个朋友圈,没错,就是来自最近热门的《隐秘的角落》,豆瓣评分8.9分,好评不断。
感觉还是蛮不错的。同时,为了想更进一步了解一下小伙伴观剧的情况,永恒君抓取了爱奇艺平台评论数据并进行了分析。下面来做个分享,给大伙参考参考。
1、爬取评论数据
因为该剧是在爱奇艺平台独播的,自然数据源从这里取比较合适。永恒君爬取了《隐秘的角落》12集的从开播日6月16日-6月26日的评论数据。
使用 Chrome 查看源代码模式,在播放页面往下面滑动,有一个 get_comments 的请求,经过调试分析,这个接口就是获取评论数据的接口,后面连接上一系列的参数即可获取评论的数据。
其中关键的就是last_id这个参数,是用来控制评论分页的,需要通过上一个页面最后一条评论的id来进行获取。
爬虫部分代码
def get_comment_html(movieId, movieName, lastId):#将获取评论的json源码,保存到txt文件中 url = "http://sns-comment.iqiyi.com/v3/comment/get_comments.action?" params = { "types":"time", "business_type":"17", "agent_type":"118", "agent_version":"9.11.5", "authcookie":"authcookie" } for item in params: url = url + item + "=" + params[item] + "&" url = url + "content_id=" + movieId+ "&last_id=" + lastId #url 为拼接好的评论地址 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36", "Accept": "application/json, text/javascript", "Referer": "https://www.iqiyi.com/v_19rxtiliso.html?vfm=2008_aldbd&fv=p_02_01", } response = requests.get(url, headers=headers) filename = movieId + movieName+".txt" if response.status_code == 200: with open(filename,"a",encoding='utf-8') as f: f.write(response.text+"\n") #将获取的评论json源码保存到txt文件,一次写入一行,表示获取的这一页的评论 else: print("request error") print("爬取第{}页评论".format(file_lines(filename))) time.sleep(0.5) last_id = parseData(response.text) #解析并获取下一个id if last_id != "End": get_comment_html(movieId, movieName, parseData(response.text)) else: print("已到结尾") #continue#结束整个程序 return None
最终将12集爬取下来的包含评论数据的json源码保存到txt文件当中,解析提取评论的时间、用户名、性别、评论内容等信息,经过去重、去空白等数据清理工作,最终获得28010条评论信息。
2、分析展示数据
在海量的数据中,我们可以分析出我们想看到的结果。为了更好的数据处理和可视化展示,这里永恒君用了Pandas和Pyecharts 这两个库。
1)评论用户性别方面
女生占了大部分,占比60.89%,比男性用户要多不少。
2)每一集的评论数量
接下来,我们再来看一下,每一期的评论数量,看是否能够得出一些不一样的数据。
from pyecharts.charts import Bar ##导入需要使用的图表 from pyecharts import options as opts ##导入配置项 comment_num3 = df["集数"].value_counts().sort_index() x_line3 = comment_num3.index.to_list() y_line3 = comment_num3.values.tolist() bar1=( Bar(init_opts=opts.InitOpts(width='800px', height='350px')) ##定义为柱状图 .add_xaxis(x_line3) ##X轴的值 .add_yaxis('评论数',y_line3) ##y的值和y的一些数据配置项 .set_global_opts(title_opts=opts.TitleOpts(title="《隐秘的角落》1-12集评论数量")) ) bar1.render("bar3.html") ###输出html文件
除了第一集的评论数特别多之外,可以看到,上半段的评论数明显要比下半段的要多,是否意味着大家普遍觉得前期的要更好看一些?
3)开播十天之内的评论数量走势
接下来我们来看看从6月16日开播之后,网友们对该剧的评论数量走势情况。
from pyecharts.charts import Line ##导入需要使用的图表 from pyecharts import options as opts ##导入配置项 comment_num = df["留言时间"].str.split(' ').str[0].value_counts().sort_index() x_line1 = [i.replace('2020-','') for i in comment_num.index.to_list()] y_line1 = comment_num.values.tolist() # 绘制面积图 line1 = Line(init_opts=opts.InitOpts(width='1200px', height='600px')) line1.add_xaxis(x_line1) line1.add_yaxis('', y_line1, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_='max', name='最大值'), opts.MarkPointItem(type_='min', name='最小值') ])) line1.set_global_opts(title_opts=opts.TitleOpts('《隐秘的角落》开播10天内评论走势'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='30')), #visualmap_opts=opts.VisualMapOpts(max_=12673) ) line1.set_series_opts(label_opts=opts.LabelOpts(is_show=True), linestyle_opts=opts.LineStyleOpts(width=2)) line1.render("Line.html")
可以看到,从6月16日开播后,评论数量一路走高在6月25日达到了一个阶段的高点。
4)一天之中大家都在什么时间段看这部剧?
通过统计16日-26日每日0-23时的评论数量,来看看大家一般都在什么时候看剧
from pyecharts.charts import Bar ##导入需要使用的图表 from pyecharts import options as opts ##导入配置项 comment_num2 = df["留言时间"].str.split(' ').str[1].str.split(":").str[0].value_counts().sort_index() x_line2 = comment_num2.index.to_list() y_line2 = comment_num2.values.tolist() bar1=( Bar(init_opts=opts.InitOpts(width='800px', height='350px')) ##定义为柱状图 .add_xaxis(x_line2) ##X轴的值 .add_yaxis('评论数',y_line2) ##y的值和y的一些数据配置项 .set_global_opts(title_opts=opts.TitleOpts(title="《隐秘的角落》0-23时评论数量")) ) bar1.render("bar2.html") ###输出html文件
可以看到,晚上20点-23时为最集中看剧的时间段,其次中午12-14点也有一波小高峰,总体更多的人是下午看剧的人多。
这是否也是你看剧的时间段呢?
5)评论的字数情况
永恒君一般看剧基本都不写评论的或者也是简单几个字,但是在这里,我特地看了一下评论字数的分布,
def comment_word_group(strings): #评论字数分组函数 if len(strings)<=10: length = 0 elif len(strings) > 10 and len(strings)<=30: length = 1 elif len(strings) >30 and len(strings) <=50: length = 2 else: length = 3 return length df["留言数量组别"] = df["留言内容"].apply(lambda x:comment_word_group(x))#评论字数分组 lengthData = df.groupby(['留言数量组别'])["留言内容"].count()#评论字数分组统计 from pyecharts.charts import Bar ##导入需要使用的图表 from pyecharts import options as opts ##导入配置项 attr = ["10字以内","10~30字","30~50字","50字以上"] #X轴 v1 = lengthData.values.tolist() #Y轴 bar1=( Bar(init_opts=opts.InitOpts(width='800px', height='350px')) ##定义为柱状图 .add_xaxis(attr) ##X轴的值 .add_yaxis('评论数量',v1) ##y的值和y的一些数据配置项 .set_global_opts(title_opts=opts.TitleOpts(title="《隐秘的角落》评论字数分布")) ) bar1.render("bar.html") ###输出html文件
绝大部分的评论字数都是在10个字以内,但也有约25%的评论字数在10-30个之内,还是让永恒君有点意外,是否说明该剧火爆也是有原因的,激起了不少伙伴的共鸣。
6)评论核心关键词
最后,永恒君将通过wordcloud库制作词云来看看,大家对该剧的整体评价,以及该剧的核心关键词。
#词云 from PIL import Image from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS import jieba import matplotlib.pyplot as plt import numpy as np contents = df["留言内容"].str.cat(sep=" ") contents sw = set(STOPWORDS) sw.add("这个") sw.add("什么") cut_text2 = " ".join(jieba.lcut(contents)) background_image = np.array(Image.open("bg.png")) wc = WordCloud(font_path=r'C:\Windows\Fonts\simhei.ttf', background_color='White', max_words=3000, width=1000, height=500, scale=1, stopwords=sw,#停用词 mask = background_image ) #font_path:设置字体,max_words:出现的最多词数量,mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的 wc.generate(cut_text2) wc.to_file("a2.jpg") #将图绘制出来 plt.imshow(wc) plt.axis("off") plt.show()
可以看到,“朝阳”、“严良”、“张东升”、“普普”、“好看”、“喜欢”、“小孩”、“原著”等关键词都是大伙在热议的。
不得不说,近年来如此火热的、而且质量不错的国产剧确实不多了。永恒君看前几集的时候,突然又有大学时候看《越狱》的那个味道,看了一集就想看下一集,停不下来。
如果你现在还没有来得及看,建议抽个时间去看看吧~~~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍如何基于Python爬虫爬取美团酒店信息,包括了如何基于Python爬虫爬取美团酒店信息的使用技巧和注意事项,需要的朋友参考一下 一、分析网页 网站的页面是 JavaScript 渲染而成的,我们所看到的内容都是网页加载后又执行了JavaScript代码之后才呈现出来的,因此这些数据并不存在于原始 HTML 代码中,而 requests 仅仅抓取的是原始 HTML 代码。抓取这种类型
本文向大家介绍Java基于WebMagic爬取某豆瓣电影评论的实现,包括了Java基于WebMagic爬取某豆瓣电影评论的实现的使用技巧和注意事项,需要的朋友参考一下 目的 搭建爬虫平台,爬取某豆瓣电影的评论信息。 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬
本文向大家介绍python爬取微博评论的实例讲解,包括了python爬取微博评论的实例讲解的使用技巧和注意事项,需要的朋友参考一下 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手。python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无论是python新入手的小白,还是已经熟练掌握的程序员,可以拿来练手。本文介绍python爬取微博评论的代
用户的评价类型可以分为显式评价和隐式评价。显式评价指的是用户明确地给出对物品的评价,最常见的例子是Pandora和YouTube上的“喜欢”和“不喜欢”按钮: 以及亚马逊的星级系统: 隐式评价 所谓隐式评价,就是我们不让用户明确给出对物品的评价,而是通过观察他们的行为来获得偏好信息。示例之一是记录用户在纽约时报网上的点击记录。 经过几周的观察之后,我们就可以为用户刻画出一个合理的模型了——她不喜欢
本文向大家介绍python制作爬虫爬取京东商品评论教程,包括了python制作爬虫爬取京东商品评论教程的使用技巧和注意事项,需要的朋友参考一下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化。下面是要抓取的商品信息,一款女士文胸。这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论。 京东商品评论
本文向大家介绍Python爬取网易云音乐热门评论,包括了Python爬取网易云音乐热门评论的使用技巧和注意事项,需要的朋友参考一下 最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧。获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据。但是有的时候我们想要的数据并不能直接获取,因为并不提供直接的下载渠道或者API供我们获取
本文向大家介绍基于python爬取梨视频实现过程解析,包括了基于python爬取梨视频实现过程解析的使用技巧和注意事项,需要的朋友参考一下 目标网址:梨视频 然后我们找到科技这一页:https://www.pearvideo.com/category_8。其实你要哪一页都行,你喜欢就行。嘿嘿… 这是动态网站,所以咱们直奔network 然后去到XHR: 找规律,这个应该不难,我就直接贴网址上来咯,
本章会从用户的评价类型开始讨论,包括显式评价(赞一下、踩一脚、五星评价等等)和隐式评价(比如在亚马逊上购买了MP3,我们可以认为他喜欢这个产品)。 内容: 显式评价 隐式评价 哪种评价方式更准确? 基于用户的协同过滤 基于物品的协同过滤 修正的余弦相似度 Slope One算法 Slope One的Python实现 MovieLens数据 第二章中我们学习了协同过滤和推荐系统的基本知识,其中讲述的