我们对梨视频的站点进行分析。得出如下结论:视频地址如下,但是在源码中并没有看到,也就得出这个页面是二次渲染。我们通过浏览器,找到返回视频地址的接口
通过比对,返回的视频接口和播放地址,以及视频的初始url。得出如下结论:
视频初始url:https://www.pearvideo.com/video_1743288,
id:1743288, 替换了返回视频的时间字段。
这样我们就可以拿到视频地址了。接下来就是下载视频。
# 梨视频的下载
import requests
# 视频目标地址
url ="https://www.pearvideo.com/video_1727763"
# 组装url
contId = url.split('_')[1]
# 视频地址获取的url
url2 = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.6102201652302242"
# 请求头信息
headers={
# ua 的使用
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
# 防盗链的使用
"Referer": f"https://www.pearvideo.com/video_{contId}"
}
# 发起请求,获取数据
data = requests.get(url2,headers=headers)
# 获取到数据,进行格式化替换
systemTime = data.json()['systemTime']
srcUrl = data.json()['videoInfo']['videos']['srcUrl']
srcUrl = srcUrl.replace(systemTime,f"cont-{contId}")
# 下载视频
with open(f'{contId}.mp4',mode="wb") as f:
f.write(requests.get(srcUrl).content)
结果如下:
总结如下:很多网站的数据,不会简单的让你下载下来。它会设置各种障碍,让你无法拿取到,无论是ua还是防盗链,设置各种token加密或者js加密。我们只要有针对的找出它的逻辑。就可以解密出来,得到我们想要的数据。