不知道大家有木有收看兴风作浪 乘风破浪的姐姐们吖?你最喜欢哪个姐姐呢?看看哪个姐姐最受弹幕欢迎吧
今天(昨天),先把芒果TV的《乘风破浪的姐姐》弹幕爬下来再说
from bs4 import BeautifulSoup
import requests
import os
import json
import pandas as pd
from wordcloud import WordCloud, ImageColorGenerator
import imageio
import seaborn as sns
import matplotlib.pyplot as plt
import jieba
import collections # 词频统计库
分析可知,弹幕的json都存在这些地方,分别复制“0.json”,“1.json”,“2.json”的URL康康
‘https://bullet-ws.hitv.com/bullet/2020/06/23/095353/8337559/0.json’
‘https://bullet-ws.hitv.com/bullet/2020/06/23/095353/8337559/1.json’
‘https://bullet-ws.hitv.com/bullet/2020/06/23/095353/8337559/2.json’
发现前面的都一样,只有最后的x.json是按照节目的时间来定的,第1分钟就是0.json,以此类推。
另外其他期的URL,前面的也是一样的,只有最后的两串数字每期有一些差别
以此为依据就可以写代码啦。
#提取某一期的弹幕
def get_danmu(num1,num2,page):
url='https://bullet-ws.hitv.com/bullet/2020/06/23/{}/{}/{}.json'
danmuurl = url.format(num1,num2,page)
res=requests.get(danmuurl)
res.encoding = 'utf-8'
jd=json.loads(res.text)
details=[]
for i in range(len(jd['data']['items'])):
result={}
result['stype']=num2
result['id']=jd['data']['items'][i]['id']
try:
result['uname']=jd['data']['items'][i]['uname']
except:
result['uname']=''
result['content']=jd['data']['items'][i]['content']
result['time']=jd['data']['items'][i]['time']
try:
result['v2_up_count']=jd['data']['items'][i]['v2_up_count']
except:
result['v2_up_count']=''
details.append(result)
return details
#输入关键信息
def count_danmu():
danmu_total=[]
num1=input('第一个数字')
num2=input('第二个数字')
page=int(input('输入总时长'))
for i in range(page):
danmu_total.extend(get_danmu(num1,num2,i))
return danmu_total
def main():
danmu_end=[]
#爬前四集,所以设置了循环4次
for j in range(4):
danmu_end.extend(count_danmu())
df=pd.DataFrame(danmu_end)
df.to_excel('danmu.xlsx')
if __name__ == '__main__':
main()
分别输入每期的参数,就可以得到相应的弹幕啦,我爬的时候是6.23,大家可以参考一下
6.23前四集的参数
095353,8337559,101
135229,8339494,134
135223,8398205,100
121038,8437644,35