avatar

目录
B站弹幕列表获取

使用av号获取oid

首先要使用两个B站的API接口

  其实只用第二个API就足够了,但因为我懒233

这些API里面就包含了现在需要爬取的

  • 视频标题

  • 视频文件标题(分P用)

  • 当前的视频oid


具体爬取方法

python
#引入一大堆内的巴拉巴拉
import requests
import json
import threading
import jsonpath
import string

#获取av号(只需要输入数字不要加av)
def bilixml(av):
try:
#获取视频信息
headers = {"user-agent": "Mozilla/5.0"}#反反爬取
url = f"https://api.bilibili.com/x/player/pagelist?aid={aid}&jsonp=jsonp"
response = requests.get(url,headers=headers).text#做个美味的汤
json_data = json.loads(response)

id_url = f"https://api.bilibili.com/x/web-interface/view?aid={aid}"
id_response = requests.get(id_url,headers=headers).text#做个美味的汤
id_json_data = json.loads(id_response)

#用jsonpath获取json的cid和标题弄成列表
cid = jsonpath.jsonpath(json_data,"$..cid")#cid
tap = jsonpath.jsonpath(json_data,"$..part")#副标题(视频文件名),用于视频分P
id = str(jsonpath.jsonpath(id_json_data,'$..data.title'))#主标题
#page用于循环计数
page = 0
for mua in cid:
#如果输入错误获取列表会返回个False
if(cid == id[0] == 'False'):
print('视频地址错误')
elif (len(cid) == 1):
# 获取弹幕xml文件
getup = requests.get("https://api.bilibili.com/x/v1/dm/list.so?oid=" + str(mua), headers=headers)
# 创建转码写入保存文件(注意修改文件夹)
getup.encoding = 'utf-8'
timedate = f"D:/{id[0]}.xml"
print(timedate)
file = open(timedate, "w", encoding='utf-8').write(getup.text)
else:
#获取弹幕xml文件
getup = requests.get("https://api.bilibili.com/x/v1/dm/list.so?oid=" + str(mua), headers=headers)

#创建转码写入保存文件(注意修改文件夹)
getup.encoding = 'utf-8'
timedate = f"D:/{id[0]}-{tap[page]}.xml"
print (timedate)
file = open(timedate,"w",encoding = 'utf-8').write(getup.text)
# page用于循环计数
page = page + 1
except:
print('似乎报错了呐')
else:
print('year~')

  分析了一天的B站API

  胃疼唉

打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论