我们对梨视频的站点进行分析。得出如下结论:视频地址如下,但是在源码中并没有看到,也就得出这个页面是二次渲染。我们通过浏览器,找到返回视频地址的接口
通过比对,返回的视频接口和播放地址,以及视频的初始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加密。我们只要有针对的找出它的逻辑。就可以解密出来,得到我们想要的数据。