首先打开这个小视频地址,别问为什么,问就是我只找到了这个小视频的接口…
然后点击排行榜,先弹出的新页面按下F12
接下来需要找每个视频的链接了
###这个很明显,一下就找到了,既然找到了第一, 那么打开那些小三角,自然能找到其他的。
随着页面下拉,注意不断更新的XHR包,会发现next_offset参数以10为单位递增。
那么现在,可以开始写代码了!
import requests
import json
import random
# 由于只能浏览到前100条数据,所以构造链接的数量确定为10。
def get_data():
urls = ['https://api.vc.bilibili.com/board/v1/ranking/top?page_size=10&next_offset={}&tag=%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&platform=pc'.format(str(i))for i in range(1, 111, 10)]
for url in urls:
response = json.loads(requests.get(url, headers=headers).text)
if response['data']['items']:
for item in response['data']['items']:
title = item['item']['description']
video_url = item['item']['video_playurl']
yield title, video_url
def download_video(name, url):
response = requests.get(url, headers=headers).content
try:
with open(name + '.mp4', 'wb')as f:
f.write(response)
except Exception as e:
print(e)
print('这个视频的标题不适合当文件名字,所以命名为随机数字~~~')
with open(str(random.randint(100, 1000)) + '.mp4', 'wb')as f:
f.write(response)
print(name, '下载完成~~~')
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}
datas = get_data()
for data in datas:
download_video(data[0], data[1])