# -*- coding: utf-8 -*-
"""
从排行流入手,控制下载速度
"""
import requests
tag='今日热门'
offset=2#第几页,每页10
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4068.4 Safari/537.36'
}
#1.请求
def Json():
for i in range(0,offset+1):
#url='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'
if i>0:
k=(i*10+1)
else:
k=''
url='https://api.vc.bilibili.com/board/v1/ranking/top?page_size=10&next_offset={}&tag={}&platform=pc'.format(k,tag)
response=requests.get(url).json()
data=response['data']['items']#{}号像桶一样取其值
for i in data:
item=i['item']
videoId=i['item']['id']
videoURL=item['video_playurl']
Down(videoId,videoURL)
#2.提取视频下载并保存
def Down(name,url):
video_response=requests.get(url,headers=headers,stream=True)
chunk_size=1024#防止爬的过快,设置最大流速度
#文件读写,a文件追加(不要覆盖),w文件存在就写入,不存在就创建(覆盖),b进制文件读写
with open('video/{}.mp4'.format(name),'ab') as f:
for data in video_response.iter_content(chunk_size=chunk_size):
f.write(data)
print('{} downed'.format(name))
#防止显露源码
if __name__=='__main__':
Json()