难点在于找到包:
好看视频是下滑动态加载的,所以在xhr 中去找包,找包步骤如下:
又点击检查,点击network
?
点击xhr?
刷线网址
往下滑
?
点击包,在preview中可以看到数据
?
?
视频链接在playurl?
代码为:
import os
filename = 'video\\'
if not os.path.exists(filename):
? ? os.mkdir(filename)
url = 'https://haokan.baidu.com/haokan/ui-web/video/feed'
p = {
? ? 'time': '1701653885089',
? ? 'hk_nonce': '9e0bccd7b82fb05760d179fc5d90f3c8',
? ? 'hk_timestamp': '1701653885',
? ? 'hk_sign': '2c36fe5cf58ddf3b348132fe07db3f48',
? ? 'hk_token': 'FWpvdAVwdwNyCHMCd3p+DAsYCgA'
}
headers = {'User-Agent':
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
? ? ? ? ? ? ? ? ? ? ? ? ? ?}
response = requests.get(url=url,params=p,headers=headers)
data = response.json()['data']['apiData']
for index in data:
? ? play_url = index['previewUrlHttp']
? ? title = index['title']
? ? # 数据保存 对于视频播放地址 也需要发送请求 获取二进制数据
? ? # 保存图片 视频 音频 特定格式的文件 都是需要获取二进制数据 进行保存
? ? content = requests.get(url=play_url,headers=headers).content
? ? with open(filename+title+'.mp4',mode='wb') as f:
? ? ? ? f.write(content)
? ? ? ? print('正在保存:',title)
结果展示:
?
?