抓取B站小視頻的代碼如下:
#請求庫
import requests
#請求頭部信息(用戶代理)
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
#定義全局變量
count=1
def video_downloads(url_video):
'''
請求視頻的下載鏈接 把視頻保存到本地
:param url_video: 視頻的下載鏈接
:return:
'''
global count
#請求視頻的下載鏈接,因為請求的視頻是數據流的方式,所以請求方式中要使用stream
response_video=requests.get(url_video,headers=headers,stream=True)
#每次下載的數據大小 1024單位為KB,表示1024KB/s
chunk_size=1024
#判斷請求的視頻下載鏈接是否成功
if response_video.status_code==200:
with open('B站小視頻/{}.mp4'.format(count),'ab')as f:
for data in response_video.iter_content(chunk_size=chunk_size):
f.write(data)
count += 1
def exrta_video_url():
'''
獲取視頻的下載地址,並調用下載函數進行下載
:return:
'''
#請求網頁地址並且獲取到服務器所返回的數據
#1、網頁的請求地址
#url的獲取,在網頁的Network下的XHR中進行查找rquest中的url.如何驗證該URL是否為我們需要查找到的url.可以通過查看review返回的數據
url='https://api.vc.bilibili.com/clip/v1/video/index?page_size=30&need_playurl=0&next_offset=-1&has_more=1&order=&platform=pc'
response_data=requests.get(url,headers=headers).json()
data=response_data.get('data').get('items')
for i in data:
#視頻的下載地址 video_downloads_url
video_downloads_url=i.get('item').get('video_playurl')
#調用下載函數進行下載
video_downloads(video_downloads_url)
exrta_video_url()
當然對於用戶代理,我們還可以使用隨機生成的方式進行生成。代理部分代碼如下(其他代碼部分不變):
#請求庫 import requests #用戶代理庫‘ from fake_useragent import UserAgent ua=UserAgent() #請求頭部信息(用戶代理) headers={ 'User-Agent':ua.random }
【保存路徑說明】
../表示當前路徑的上層路徑。
~表示家路徑
/根路徑
./當前同路徑,可以不用寫。