千家信息网

怎么用Python爬取电影

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,这篇文章主要讲解了"怎么用Python爬取电影",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Python爬取电影"吧!首先,我用python爬取
千家信息网最后更新 2024年10月24日怎么用Python爬取电影

这篇文章主要讲解了"怎么用Python爬取电影",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Python爬取电影"吧!

首先,我用python爬取了电影的所有弹幕,这个爬虫比较简单,就不细说了,直接上代码:

import requestsimport pandas as pdheaders = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"}url = 'https://mfm.video.qq.com/danmu?otype=json&target_id=6480348612%26vid%3Dh0035b23dyt' # 最终得到的能控制弹幕的参数是target_id和timestamp,tiemstamp每30请求一个包。comids=[]comments=[]opernames=[]upcounts=[]timepoints=[]times=[]n=15while True:    data = {            "timestamp":n}    response = requests.get(url,headers=headers,params=data,verify=False)    res = eval(response.text) #字符串转化为列表格式    con = res["comments"]    if res['count'] != 0: #判断弹幕数量,确实是否爬取结束        n+=30        for j in con:            comids.append(j['commentid'])            opernames.append(j["opername"])            comments.append(j["content"])            upcounts.append(j["upcount"])            timepoints.append(j["timepoint"])    else:        breakdata=pd.DataFrame({'id':comids,'name':opernames,'comment':comments,'up':upcounts,'pon':timepoints})data.to_excel('发财日记弹幕.xlsx')

首先用padans读取弹幕数据

import pandas as pddata=pd.read_excel('发财日记弹幕.xlsx')data

近4万条弹幕,5列数据分别为"评论id""昵称""内容""点赞数量""弹幕位置"

将电影以6分钟为间隔分段,看每个时间段内弹幕的数量变化情况:

time_list=['{}'.format(int(i/60))for i in list(range(0,8280,360))]pero_list=[]for i in range(len(time_list)-1):    pero_list.append('{0}-{1}'.format(time_list[i],time_list[i+1]))counts=[]for i in pero_list:    counts.append(int(data[(data.pon>=int(i.split('-')[0])*60)&(data.pon

从弹幕数量变化来看,早60分钟,120分钟左右分别出现2个峰值,说明这部电影至少有2个高潮

为了满足好奇心,我们一起分析一下前6分钟(不收费)以及2个前面大家都在说什么

1.看看前六分钟大家在说什么:

#词云代码import jieba #词语切割import wordcloud #分词from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS #词云,颜色生成器,停止from pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypefrom pyecharts import options as optsdef ciyun(content):    segment = []    segs = jieba.cut(content)   # 使用jieba分词    for seg in segs:        if len(seg) > 1 and seg != '\r\n':            segment.append(seg)    # 去停用词(文本去噪)    words_df = pd.DataFrame({'segment': segment})    words_df.head()    stopwords = pd.read_csv("stopword.txt", index_col=False,                                quoting=3, sep='\t', names=['stopword'], encoding="utf8")    words_df = words_df[~words_df.segment.isin(stopwords.stopword)]    words_stat = words_df.groupby('segment').agg(count=pd.NamedAgg(column='segment', aggfunc='size'))    words_stat = words_stat.reset_index().sort_values(by="count", ascending=False)    return words_stat
data_6_text=''.join(data[(data.pon>=0)&(data.pon<360)]['comment'].values.tolist())words_stat=ciyun(data_6_text)from pyecharts import options as optsfrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypewords = [(i,j) for i,j in zip(words_stat['segment'].values.tolist(),words_stat['count'].values.tolist())]c = (    WordCloud()    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)    .set_global_opts(title_opts=opts.TitleOpts(title="{}".format('前6分钟'))))c.render_notebook()

排名第一的是"小宝",还出现了"好看""支持"等字样,看来还是小宝还是挺受欢迎的

2.第一个高潮:

data_60_text=''.join(data[(data.pon>=54*60)&(data.pon<3600)]['comment'].values.tolist())words_stat=ciyun(data_60_text)from pyecharts import options as optsfrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypewords = [(i,j) for i,j in zip(words_stat['segment'].values.tolist(),words_stat['count'].values.tolist())]c = (    WordCloud()    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)    .set_global_opts(title_opts=opts.TitleOpts(title="{}".format('第一个高潮'))))c.render_notebook()

排在前面的分别是"小宝""二哥""哈哈哈""好看"等,说明肯定是小宝和二哥发生了什么搞笑的事

3.第二个高潮:

data_60_text=''.join(data[(data.pon>=120*60)&(data.pon<128*60)]['comment'].values.tolist())words_stat=ciyun(data_60_text)from pyecharts import options as optsfrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypewords = [(i,j) for i,j in zip(words_stat['segment'].values.tolist(),words_stat['count'].values.tolist())]c = (    WordCloud()    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)    .set_global_opts(title_opts=opts.TitleOpts(title="{}".format('第二个高潮'))))c.render_notebook()

高频词中,发现"好看""泪点""哭哭"等字样,说明电影的结尾很感人

我们接着再挖一下发弹幕最多的人,看看他们都在说什么,因为部分弹幕没有昵称,所以需要先踢除:

data1=data[data['name'].notna()]data2=pd.DataFrame({'num':data1.value_counts(subset="name")}) #统计出现次数data3=data2.reset_index()data3[data3.num>100]     #找出弹幕数量大于100的人
data_text=''for i in data3['name'].values.tolist():    data_text+=''.join(data[data.name==i]['comment'].values.tolist())words_stat=ciyun(data_text)from pyecharts import options as optsfrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypewords = [(i,j) for i,j in zip(words_stat['segment'].values.tolist(),words_stat['count'].values.tolist())]c = (    WordCloud()    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)    .set_global_opts(title_opts=opts.TitleOpts(title="{}".format('粉丝弹幕'))))c.render_notebook()

感谢各位的阅读,以上就是"怎么用Python爬取电影"的内容了,经过本文的学习后,相信大家对怎么用Python爬取电影这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

电影 数量 高潮 小宝 好看 内容 情况 变化 学习 二哥 代码 字样 数据 日记 时间 昵称 还是 不同 感人 好奇 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全公司的市销率 柳州网络安全0基础入门到精通 手机搜出来的无线网络安全 北京中培软件开发 电车网络安全 浙江大型软件开发维修价格 怎么查看电脑数据库的url 中国银行在各省的数据库 购买哪里的服务器不用备案 校园网络安全问题问卷 浙江软件开发公司有哪些 资源库和资源数据库的区别 包你说小程序软件开发 网络安全防止黑客入侵 网络安全里程碑会议2016 不属于数据库信息系统特点的是 天津长城汽车软件开发加班怎么样 控制系统软件开发怎么样 石家庄凡成网络技术有限公司 工商银行软件开发中心宣讲 服务器资源分配策略 中国网络安全谷选址在哪儿 思科网络技术学院含金量 团天下互联网科技有限公司 江西网络软件开发活动方案 2017企业软件开发市场 服务器图形化管理 软件开发中tag是什么意思啊 linux服务器操作系统书 电视台 网络安全 中标
0