怎么用Python爬取电影
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"怎么用Python爬取电影",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Python爬取电影"吧!首先,我用python爬取
千家信息网最后更新 2026年11月01日怎么用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_statdata_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安全错误
数据库的锁怎样保障安全
咖啡
上海卓越科技互联网
中国互联网科技股
美国互联网科技巨头监管
菲比寻常互联网科技
互联网科技中介
互联网系的金融科技公司
互联网科技公司有风险吗
互联网与医疗科技
新兴科技互联网创新大赛颁奖典礼
苏州铭阳互联网科技有限公司
卓翼科技产业互联网合作
济南有互联网科技公司吗
黑科技 体验场景 互联网大会
信承诺互联网科技有限公司
世界互联网科技成果奖
互联网领先科技活动
三亚科技创新互联网基地
网互联网络科技
北京瑞云互联网科技有限公司
奇酷互联网科技
小马过河互联网科技
沃里互联网科技
深圳卡尔迅互联网科技有限公司怎么样
承德科技产业互联网发展
茂名市互联网科技产业园
上海宁丞科技互联网
互联网时代高科技布局
重庆科技产业互联网有哪些
知域互联网科技有限公司官网