芒果tv自己发的弹幕自己看不了,芒果tv的弹幕怎么找不到

首页 > 实用技巧 > 作者:YD1662023-11-06 19:37:57

点击并拖拽以移动

通过删减各参数,发现仅有timestamp参数的变化会影响弹幕数据的爬取,且timestamp参数是首项为15,公差为30的等差数列。可以大胆猜测腾讯视频每30秒更新一页弹幕数据,该视频长度为12399秒。而数据格式为标准的json格式,因此json.loads直接解析数据即可。

2.爬虫实战

import requests

import json

import time

import pandas as pd

df = pd.DataFrame()

for page in range( 15 , 12399 , 30 ):

headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' }

url = 'mfm.video.qq.com/danmu?otype… .format(page)

print( "正在提取第" str(page) "页" )

html = requests.get(url,headers = headers)

bs = json.loads(html.text,strict = False ) #strict参数解决部分内容json格式解析报错

time.sleep( 1 )

#遍历获取目标字段

for i in bs[ 'comments' ]:

content = i[ 'content' ] #弹幕

upcount = i[ 'upcount' ] #点赞数

user_degree =i[ 'uservip_degree' ] #会员等级

timepoint = i[ 'timepoint' ] #发布时间

comment_id = i[ 'commentid' ] #弹幕id

cache = pd.DataFrame({ '弹幕' :[content], '会员等级' :[user_degree],

'发布时间' :[timepoint], '弹幕点赞' :[upcount], '弹幕id' :[comment_id]})

df = pd.concat([df,cache])

df.to_csv( 'tengxun_danmu.csv' ,encoding = 'utf-8' )

print(df.shape)

3.数据预览

芒果tv自己发的弹幕自己看不了,芒果tv的弹幕怎么找不到(5)

点击并拖拽以移动

三、芒果TV弹幕

1.网页分析

本文以爬取《乘风破浪的姐姐》最后一期视频弹幕为例,首先通过以下步骤找到存放弹幕的真实url。

芒果tv自己发的弹幕自己看不了,芒果tv的弹幕怎么找不到(6)

点击并拖拽以移动

通过分析参数,我们可以发现,芒果TV会生成首项为0,公差为1的等差数列json弹幕文件,每个json文件存储前一分钟内所有的弹幕数据。弹幕数据存放格式为json,数据解析较为简单。

2.爬虫实战

import requests

import json

import pandas as pd

def get_mangguo_danmu (num1, num2, page) :

try :

url = 'bullet-ws.hitv.com/bullet/2020…

print( "正在爬取第" str(page) "页" )

danmuurl = url.format(num1, num2, page)

res = requests.get(danmuurl)

res.encoding = 'utf-8'

#print(res.text)

data = json.loads(res.text)

except :

print( "无法连接" )

details = []

for i in range(len(data[ 'data' ][ 'items' ])): # 弹幕数据在json文件'data'的'items'中

result = {}

result[ 'stype' ] = num2 # 通过stype可识别期数

result[ 'id' ] = data[ 'data' ][ 'items' ][i][ 'id' ] # 获取id

try : # 尝试获取uname

result[ 'uname' ] = data[ 'data' ][ 'items' ][i][ 'uname' ]

except :

result[ 'uname' ] = ''

result[ 'content' ] = data[ 'data' ][ 'items' ][i][ 'content' ] # 获取弹幕内容

result[ 'time' ] = data[ 'data' ][ 'items' ][i][ 'time' ] # 获取弹幕发布时间

try : # 尝试获取弹幕点赞数

result[ 'v2_up_count' ] = data[ '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_mangguo_danmu(num1, num2, i))

return danmu_total

def main () :

df = pd.DataFrame(count_danmu())

df.to_csv( 'mangguo_danmu.csv' )

if name == 'main' :

main()

3.数据预览

芒果tv自己发的弹幕自己看不了,芒果tv的弹幕怎么找不到(7)

点击并拖拽以移动

四、爱奇艺弹幕1.网页分析本文以爬取《乐队的夏天第2季》第13期上视频弹幕为例,首先通过以下步骤找到存放弹幕的真实url。

芒果tv自己发的弹幕自己看不了,芒果tv的弹幕怎么找不到(8)

上一页123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.