【注意】代码转自https://www.52pojie.cn/thread-627008-1-1.html
因为担心原作者网页丢失,所以进行了转移,且有小细节修改
【B站API合集】https://www.bilibili.com/read/cv3430609/
浏览器输入http://api.bilibili.com/archive_stat/stat?aid=10086&type=jsonp回车获取数据为:{“code”:0,“message”:“0”,“ttl”:1,“data”:{“aid”:10086,“view”:590157,“danmaku”:7545,“reply”:4279,“favorite”:7477,“coin”:1123,“share”:1329,“now_rank”:0,“his_rank”:97,“like”:7715,“dislike”:0,“no_reprint”:0,“copyright”:2}}
具体含义分析见转载网页和API网页就好~
下面直接搬运代码
import time
import requests
from prettytable import PrettyTable
import importlib,sys
importlib.reload(sys)
def get_craw_num():
print('-------菜单-------')
i = int(input('请输入要爬取视频的av号:'))
print('------------------')
return i
def start_craw(url):
print('开始爬取……')
headers = {}
x = PrettyTable(['视频编号', '播放量', '弹幕', '回复', '收藏', '硬币', '分享'])
t = 0
i = get_craw_num()
while (t < 100):
r = requests.get(url.format(i), headers=headers)
#print(url.format(i))
if r.status_code == 200:
try:
j = r.json()['data']
favorite = j['favorite']
danmaku = j['danmaku']
coin = j['coin']
view = j['view']
share = j['share']
reply = j['reply']
favorite = str(favorite)
danmaku = str(danmaku)
coin = str(coin)
view = str(view)
share = str(share)
reply = str(reply)
av_num = "av" + str(i)
x.add_row([av_num, view, danmaku, reply, favorite, coin, share])
except Exception as e:
pass
else:
break
i = i + 1
t = t + 1
print(x)
print('爬取完成')
if __name__ == '__main__':
url = 'http://api.bilibili.com/archive_stat/stat?aid={}&type=jsonp'
start_craw(url)