本帖最后由 yijiuxiaole 于 2021-12-31 20:26 编辑
祝大家元旦快乐。
今天干的是某牙视频
连接在这 还是老规矩 首先分析 f12 刷新 列表发现是静态的数据这个先不管,直接看视频 刷新 点击media(视频)
点击进去 复制里面的关键字 ctrl+f 粘贴 搜索 发现一个连接里面有视频连接 然后把连接的那些参数删除发现有一个id可以用
https://liveapi.huya.com/moment/getMomentContent?callback=jQuery1124030062870365079375_1640948409562&videoId=628255115&_=1640948409580 这是原来的
IDA console, courier new, monospace">https://liveapi.huya.com/moment/getMomentContent?&videoId=628255115 这是简化的
思路就是
获取每个视频的id 把这个id放进简化的连接里面 在请求就是视频的直连
[Python] 纯文本查看 复制代码
import re
import os
import requests
if not os.path.exists('shiping'): # 判断文件夹是否存在
os.mkdir('shiping')
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36'
}
for jj in range(1,10):
url = f'https://v.huya.com/g/Dance?set_id=31&order=hot&page={jj}' # 这个是请求页数
print(f'正在下载第{jj}页')
resp = requests.get(url,headers=headers) # 进行请求
guize = re.compile(r'<li data-vid="(.*?)"><a href=".*?" class="video-wrap" target="_blank" title="(.*?)">',re.S) # 列表的正则匹配模板 0是id 1是名字
a = re.findall(guize,resp.text) # 得到匹配的内容
for i in a: # 进行遍历
name = i[1]
print(f'正在下载{name}')
resp1 = requests.get(url=f'https://liveapi.huya.com/moment/getMomentContent?videoId={i[0]}',headers=headers).json()['data']['moment']['videoInfo']['definitions']
for j in resp1:
resp2 = requests.get(url=j['url'],headers=headers).content
with open(f'./shiping/{name}.mp4','wb') as f:
f.write(resp2)
print(f'{name}保存完成')
break # 是一个列表 得到第0个就行 所以终止
祝大家元旦快乐! |