爬取平台:芒果TV
爬取内容:《乘风破浪的姐姐》弹幕数据(以前6期为例)
爬取工具:Anaconda3 Spyder
爬取日期:2020年7月1日
打开节目网页,通过开发者工具Network中的XHR我们可以发现,随着节目的播放,每隔一分钟XHR中会新增一个json文件。
查看json文件,可以发现每个json文件都存储着前一分钟内所有的弹幕数据,主要包括用户名、弹幕内容、点赞数等,因此,节目时长(min)=json文件数。
在本次实验中,主要爬取用户id、用户名uname、弹幕内容content、发布时间time、弹幕点赞数v2_up_count。
在Headers中可以获取每个json文件的url(图是7.14补的,所以和代码里的url有差异,问题不大),发现同一期节目json文件的url日期后两个数字是一样的,可以通过这两个数字定位到节目的某一集。
找到url的规律后开始写代码。
首先导入requests库、json库、pandas库。
import requests
import json
import pandas as pd
构建get_danmu(num1,num2,page)函数,其中num1、num2为url日期后的两个数字,page是json文件后缀前的数字(即节目分钟数)。
代码中用到的函数:
format():格式化输出,即将format()后面的内容,填入大括号中(可以按位置,可以按变量)
requests.get():向指定的资源发出请求
res.text:获取文本信息(否则只返回HTTP状态码)
json.loads():将json格式数据(字符串)转换为字典
#提取某一期的弹幕
def get_danmu(num1,num2,page):
try:
url='https://bullet-ws.hitv.com/bullet/2020/07/1/{}/{}/{}.json'
danmuurl = url.format(num1,num2,page)