爬取视频练习

爬取视频网站需要进行防盗链的预习

何为防盗链?

正文开始

打开网址,随便找一个视频点进去,然后打开开发者工具,定位到视频的位置可以找到标签
在这里插入图片描述注意:此标签在HTML中并没有出现,所以要进入NetWork选中XHR然后刷新页面,可以看到返回的数据
在这里插入图片描述
数据包返回的地址为:https://video.pearvideo.com/mp4/adshort/20211020/1634730996384-15784833_adpkg-ad_hd.mp4
从video标签中可以看出正确的视频地址为:https://video.pearvideo.com/mp4/adshort/20211020/cont-1744131-15784833_adpkg-ad_hd.mp4

从而找出他们俩的不同之处,进行Url的修整

思路:
        1.此网站做了防盗链(所以必须在服务器返回的响应包中提取Referer参数并加入到headers中)
        2.服务器返回的数据包中,给出的视频地址并不正确,与原页面用开发者工具找到的<video>标签中的连接并不相同,所以要进行更改
        3.页面中的<video>标签并不是服务器在第一时间返回的HTML页面,而是后来请求返回的数据包,通过NetWOrk的XHR中可以查看数据包并定位到SrcUrl
import requests
url='https://www.pearvideo.com/video_1744131'
contId=url.split("_")[1]       #根据url提取contId方便后续处理
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
"Referer": "https://www.pearvideo.com/video_1744131"   #防盗链
}
videoUrl=f'https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.91042477668021'#这个地址是视频数据包的URL
resp=requests.get(url=videoUrl,headers=headers)
videoNewUrl=resp.json()    #返回请求包的json格式数据,获得视频的URL
systemTime=videoNewUrl['systemTime']    #根据SrcUrl提取出此项
srcUrl=videoNewUrl['videoInfo']['videos']['srcUrl']         #根据层级关系,将URL提取出来
video=srcUrl.replace(systemTime,f"cont-{contId}")       #进行最后的替换,此链接就是视频的链接

#下载视频
with open("video.mp4","wb") as fp:
    fp.write(requests.get(video).content)   #注意:下载视频意思就是获取内容,所以用.content
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值