python-(6-5-3)爬虫---处理防盗链获取视频

news2024/10/6 0:29:53

文章目录

  • 一 需求
  • 二 分析
    • 1 拿到contId
    • 2 拿到video_status返回的json -----> src Url
    • 3 对src Url 进行修整
    • 4 下载资源
  • 三 代码

一 需求

想要获得某处的视频资源,但由于防盗链的存在,使得在使用浏览器的开发页面获得的视频地址与我们实际获取的地址产生差异。通过观察比较,我们可以将获得的内容进行拼接,得到真实的地址,从而得到资源。

二 分析

1 拿到contId

实际上,通过下划线 _可以将页面的URL进行切割,后面的部分就是 contId
以本网站CSDN为例,https://csdn.net/video_723774782 的下划线后面的数字就是 contId

2 拿到video_status返回的json -----> src Url

首先,获取视频状态的URL,以及获取的请求方式。

在这里插入图片描述

其次,进行headers的身份伪装,以及防盗链的处理。

在这里插入图片描述

此处的防盗链指的是,网站会检查你本次访问请求的上一次访问URL在哪里。

比如你现在在A,要访问C,需要进行 A ------> B ------> C的访问路径。此时你已经访问到了 C ,那么防盗链就是检查你的上一次访问请求是不是从 B 来的,如果是 B ,那么没问题; 如果不是,说明异常。

3 对src Url 进行修整

得到json形式的src_url后,我们将其中的部分参数以字典形式存放,来将其修改,以便于得到真实的url

此处说明一下,如果不懂得如何通过浏览器的开发者平台获取网页资源的真实url,可以参考笔者的文章。
python-(6-4-4)爬虫—bs解析案例—爬取图片

笔者在完整的代码中将需要替换的内容进行了标注,请自行查看代码,此处不作重点说明。

4 下载资源

与下载图片相同,下载视频也是使用with open()函数,注意保存的路径即可。

三 代码

import requests

# 网页的URL
url = "https://www.pearvideo.com/video_1515705"
# 得到contId
cont_id = url.split("_")[1]

# 得到视频状态的url
video_status_url = f"https://www.pearvideo.com/videoStatus.jsp?contId={cont_id}&mrd=0.9091697417206721"
headers = {
    "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Mobile Safari/537.36",
    # 防盗链: 溯源,当前本次请求的上一级是xxx
    "Referer": url
}
# 通过requests访问得到响应
resp = requests.get(url=video_status_url,headers=headers)
# 用字典接收得到的返回值
dict = resp.json()

# 此处比较真实的视频URL和我们获取的URL
# https://video.pearvideo.com/mp4/adshort/20190211/cont-1515705-13566075_adpkg-ad_hd.mp4
# https://video.pearvideo.com/mp4/adshort/20190211/1670482977937-13566075_adpkg-ad_hd.mp4

# 我们得到的src url
src_url = dict["videoInfo"]["videos"]["srcUrl"]
# 需要被替换的参数
system_time = dict["systemTime"]
# 最终需要的真实视频的url
src_url = src_url.replace(system_time, f"cont-{cont_id}")
print(src_url)

# 下载视频
with open("pear.mp4",mode="wb") as f:
    # 将视频内容直接写入到文件中
    f.write(requests.get(src_url).content)

# 关闭请求响应的连接
resp.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring源码深度解析十四:@Aspect方式的AOP上篇 - @EnableAspectJAutoProxy

一、前言 文章目录:Spring源码深度解析:文章目录 二、简介 Aop 即面向切面编程,而 Aspect 是Aop 思想的一种实现。 并不是所有的AOP框架都相同,它们在连接点模型上可能有强弱之分,有些允许在字段修饰符级别的应用通…

分享a股下单接口执行买入操作的流程代码

用户在使用a股下单接口&#xff0c;能够得到更多更准确的信息&#xff0c;让用户在股市当中&#xff0c;操作起来更加便捷和有效&#xff0c;对股市市场行情动向判断更加的准确一些。 下面看一下a股下单接口是如何执行买入操作的功能&#xff1a; std::cout << " …

小程序批发订货怎么做

小程序订货系统 批发订货是每个生产企业都不少不了的一个环节&#xff0c;伴随着信息化技术的不断更新&#xff0c;传统的订货方式已经不能满足生产企业的需求了&#xff0c;而鲜桥小程序订货系统基于微信生态&#xff0c;让你即买即用&#xff0c;轻松告别传统的订货方式&…

Java解析NC2018-2020降水量格点数据

经纬度范围 lon = 7849;lat = 5146;time = 12;double lon(lon=7849); :long_name = "longitude"; :unit = "degree"; double lat(lat=5146); :long_name = "latitude"; :unit = "degree"; double time(time=12); :long_nam…

【论文】Holistically-Nested Edge Detection

文章目录Development of Edge DetectionMulti-scale learning structureLoss FunctionNetwork Architecture&#x1f4c4;&#xff1a;Holistically-Nested Edge Detection&#x1f517;&#xff1a;https://openaccess.thecvf.com/content_iccv_2015/html/Xie_Holistically-Ne…

DSP篇--C6701功能调试系列之SRAM、ADC、喂狗测试

目录 1、SRAM测试 1.1 SRAM读写功能测试 1.2 EDAC测试 2、ADC测试 3、DSP喂狗测试 调试的前期准备可以参考前面的博文&#xff1a;DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客https://blog.csdn.net/nanke_yh/article/details/128277631 1、SRAM测试 1…

国税局验证码识别 识别不了我还不能input吗

前言 最近接到一个需求&#xff0c;就是在国税局的网页中输入 【发票代码】、【*发票号码】、【*开票日期】、【*开具金额(不含税)】、【*验证码】 然后将此发票进行下载&#xff0c;但是【验证码】真的是拦路虎啊&#xff0c;我也查询了好多大佬的论文&#xff0c;有的是通过J…

OTP语音芯片ic的工作原理,以及目前的现状和技术发展路线是什么?flash型

目录 otp工艺和flash工艺的区别和概念 衡量一个芯片的成本&#xff0c;简单可以归结为3个方面 芯片的生产工艺&#xff0c;比如OTP的工艺都是100nm左右的工艺、8寸晶圆&#xff0c;很便宜。并且OTP的技术需要光刻机光照的次数少&#xff0c;所以生产起来快&#xff0c;这样无…

openCV实战项目--人脸考勤

人脸任务在计算机视觉领域中十分重要&#xff0c;本项目主要使用了两类技术&#xff1a;人脸检测人脸识别。 代码分为两部分内容&#xff1a;人脸注册 和 人脸识别 人脸注册&#xff1a;将人脸特征存储进数据库&#xff0c;这里用feature.csv代替人脸识别&#xff1a;将人脸特…

【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)

一、数据编码概述 数据编码概述 - 在分布式系统中需要处理大量的网络数据,为了加快网络数据的传输速度,通常需 要对传输数据进行编码压缩 数据压缩是以尽可能少的数码来表示信源所发出的信号&#xff0c;减少容纳给定的消息集合或数据采样集合的信号空间&#xff0c;这里讲的…

Linux安装Maven

目录 1.下载安装包 2.解压Maven 3.添加环境变量 4.检测Maven是否搭建成功 5. 编辑 Maven的settings.xml文件 5.1设置本地仓库 5.2添加阿里云镜像 1.下载安装包 访问查看需要的版本&#xff1a;Index of /dist/maven (apache.org) 安装包统一存放到/opt/software目录下…

Java基于springboot校园德育活动预约和评分管理系统+vue+elementUI

本系统结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算机各种优势的情况下&#xff0c;采用JAVA语言&#xff0c;结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本校园德育活动预约和评分管理系统主要包括个人中心、学生管理、活动信息管理、活动…

使用Docker实现容器之间的互通

目录 怎样实现容器之间的相互通信&#xff1f; 情况1&#xff1a;两个容器在同一网段上 情况2&#xff1a;两个容器在不同网段上 怎样实现容器之间的相互通信&#xff1f; 情况1&#xff1a;两个容器在同一网段上 命令拓展&#xff1a; 删除所有容器&#xff1a;docker rm …

NuSences 数据集解析以及 nuScenes devkit 的使用

文章目录一、官网介绍1.1 总览(Overview)1.1.1 数据搜集(Data collection)1.1.2 传感器同步&#xff08;Sensor synchronization&#xff09;1.2 数据格式&#xff08;Data format&#xff09;attributecalibrated_sensorcategoryego_poseinstancelidarseglogmapsamplesample_a…

安装包UI美化之路-升级安装与静默安装一键打包

在实际应用中&#xff0c;除了产品安装外&#xff0c;还需要能够持续升级到新的版本&#xff0c;这时候升级方案就显得比较重要&#xff1b;而还有一些使用场景&#xff0c;需要咱们的安装包在安装时&#xff0c;不要显示安装界面&#xff0c;直接在后台进行安装&#xff01; …

测试开发之前端篇-Web前端简介

自从九十年代初&#xff0c;人类创造出网页和浏览器后&#xff0c;Web取得了长足的发展&#xff0c;如今越来越多的企业级应用也选择使用Web技术来构建。 前面给大家介绍网络协议时讲到&#xff0c;您在阅读这篇文章时&#xff0c;浏览器是通过HTTP/HTTPS协议向服务器发送请求…

Python+Django的高考志愿填报辅助系统 计算机毕业设计

在各学校的教学过程中&#xff0c;学生的高考志愿填报辅助是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及&#xff0c;“基于网络的学习模式”正悄无声息的改变着传统的教室学习模式&#xff0c;“基于网络的教学平台”的研究和设计也成为教育技术领域的热点课…

音频转文字怎么转?三个方法教你音频转文字

昨天&#xff0c;朋友给我发了一条信息&#xff0c;大概的内容是“今天上班的时候&#xff0c;领导突然发了一段音频&#xff0c;说是会议的录音&#xff0c;让我朋友在下班之前整理成会议纪要发给他。无奈&#xff0c;我的朋友只能打开录音开始整理”。听到他还在听录音手动整…

Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW

今天的主题是Stata中的治疗效果。最近我们被客户要求撰写关于治疗效果的研究报告&#xff0c;包括一些图形和统计输出。 治疗效果估算器根据观察数据估算治疗对结果的因果关系。 我们将讨论四种治疗效果估计量&#xff1a; RA&#xff1a;回归调整IPW&#xff1a;逆概率加权I…

【卡尔曼滤波器】递归算法

大家好&#xff0c;我是小政。最近在学习卡尔曼滤波&#xff0c;本篇文章记录一下我学习的卡尔曼滤波器中的递归算法&#xff0c;通过举例子让大家更加清晰理解递归到底是什么&#xff1f;希望与同是卡尔曼滤波研究方向的同学进行一些交流。 递归算法1.为什么要用卡尔曼滤波器&…