python-下载某短视频平台视频(高清无水印)

2023-05-16

python-下载某短视频平台音视频(高清无水印)

  • 前言
    • 1、获取视频 url
    • 2、发送请求
    • 3、数据解析
    • 4、本地保存
    • 5、完整代码


前言

1、Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

2、有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

3、dy核心的cookies是sessionID值, 可嵌套到接口的headers里的Cookie里进行请求。

1、获取视频 url

在网页端找一个视频,点击进入详情,页面中地址栏里就是该视频的 url 。
手机端复制url后,先粘到浏览器地址栏访问,url 会自动转换,这时候复制地址栏的 url 即可。

2、发送请求

接下来就是简单的发送请求,唯一需要注意的一点就是 headers 中除了要配置 UA 外,还要配置 cookie 信息,否则拿不到想要的数据。

配置好 headers 之后,发送 get 请求,拿到页面源码数据

data = requests.get(url=url, headers=headers)
data.encoding = 'utf-8'
data = data.text

3、数据解析

在页面源码数据中有很长一串数据是经过 url 编码的,而我们需要的数据都在这串数据中,因此我们需要拿到这串数据。通过正则表达式定位并取出这串数据,然后调用 requests 模块下的工具包 utils 里的 unquote 方法解码这串数据(得到的是 string 类型的数据),代码如下:

data_en = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script></head><body >',data)[0]
data_all = requests.utils.unquote(data_en)

后面就是经典的资源定位了,我们先来说视频下载,先在数据中找到视频的url,会发现有两个
在这里插入图片描述
经过我的测试,第一个url的视频带有水印,而第二个没有,这个根据自己的需要选择就行,只是改个索引的问题,我这里选择第二个无水印的,编写正则表达式将其取出

video_url = 'https:' + re.findall('"playAddr":\[{"src":".*?{"src":"(.*?)"}]',data_all)[0]

4、本地保存

持久化存储,python本地保存视频

#保存
if not os.path.exists(r'C:\video'):
    os.mkdir(r'C:\video')
video_content = requests.get(url=video_url, headers=headers).content
with open(r'C:\video\title.mp4', 'wb+') as f:
    f.write(video_content)

5、完整代码

import requests, re, os

url = ""
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
    'cookie': ''
}

data = requests.get(url=url, headers=headers)
data.encoding = 'utf-8'
data = data.text
# print(data)
data_en = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script>', data)[0]
data_all = requests.utils.unquote(data_en)

# 视频url
video_url = 'https:' + re.findall('"playAddr":\[{"src":".*?{"src":"(.*?)"}]', data_all)[0]
print(video_url)

# 评论
comments = re.findall("\"comments\":\[(.*?)],\"consumerTime\":", data_all)
print(comments)

# 标题
title = re.findall('"desc":"(.*?)","authorUserId"', data_all)[0].replace(' ', '')
print('-----------------------------------------------------------------------------------------')
print(title)

#保存
if not os.path.exists(r'C:\video'):
    os.mkdir(r'C:\video')
video_content = requests.get(url=video_url, headers=headers).content
with open(r'C:\video\title.mp4', 'wb+') as f:
    f.write(video_content)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-下载某短视频平台视频(高清无水印) 的相关文章

  • Pandas set_levels,如何避免标签排序?

    我使用时遇到问题set levels多索引 from io import StringIO txt Name Height Age Metres A 1 25 B 95 1 df pd read csv StringIO txt heade
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • kinit无密码登录配置

    通常在远程客户端上登录kerbros都需要密码 xff0c 在学习hadoop的时候提到了ktutil这个工具 xff0c 这里将使用方法贴出来 运行命令 ktutil add entry password p hadoop admin 6
  • (二)C语言数据类型(2)

    今天主要总结了一下运算符 xff0c 详细介绍了运算符分类和优先级的基本知识 欢迎加入嵌入式学习群 xff1a 559601187 运算符按操作数可以分为 xff1a 单目运算符 双目运算符和三目运算符 xff0c 优先级依次为单目运算符
  • Error: failed to create deliver client for orderer: orderer client failed to connect to orderer

    环境 操作系统 CentOS 7 Fabric版本 2 0 1 问题 创建通道时报错 yaml文件已通过extra hosts方式配置域名解析 peer channel create o orderer example com 7050 c
  • Fabric2.0 新特性实践:通道成员可扩展链码

    承接上文 xff1a Hyperledger Fabric 2 0新特性 xff0c Fabric2 0版本允许组织去扩展链码 xff0c 也就是说通道成员之间的链码包可能会不同 xff0c 这么做的好处是每个组织可以根据自身利益增加自己的
  • cannot find package github.com/hyperledger/fabric-chaincode-go/shim in any of: /usr/local/go/src/

    问题 Fabric版本 xff1a 2 0 1 在使用Java SDK 安装go语言链码时报错 xff1a failed to invoke backing implementation of InstallChaincode could
  • Fabric2.0 使用开发模式(dev 模式)测试

    dev模式 dev模式不是Fabric 2 0引入的 xff0c 1 x版本就已存在的 对于Fabric 2 0来说 xff0c 可以构建外部的链码容器 xff0c 对于运维和开发调试来说 xff0c 变得越来越方便 在2 0版本之前 xf
  • C语言获取文件行数

    int tmain int argc TCHAR argv FILE fp int flag 61 0 file row 61 0 count 61 0 if fp 61 fopen 34 C Users zzl Desktop lmcli
  • Hyperledger Fabric排序服务实现

    排序算法 solo kafka raft Raft 推荐 作为 v1 4 1 的新特性 xff0c Raft 是一种基于 etcd 中 Raft 协议实现的崩溃容错 xff08 Crash Fault Tolerant xff0c CFT
  • 以太坊学习一:密码学

    密码学作为区块链最基础的的技术之一 xff0c 这些知识既包括对信息的转换 加解密 xff0c 以及校验过程 xff0c 也包括以太坊地址和交易Hash xff0c 交易信息RLP编码 基于椭圆曲线公私钥签名 区块Merkle树交易 Has
  • VMware安装Debian完成后启动黑屏仅有一个光标

    问题 xff1a vmware安装Debian完成 xff0c 启动时出现黑屏现象 xff0c 仅有一个光标 问题原因 xff1a 安装步骤有误 解决方案 重新安装镜像 xff0c 安装过程中记得 将GRUB 启动引导器安装至您的主驱动器
  • mybatis resultType为map 字段为null不返回

    框架 springboot框架 xff0c 分为两种情况 xff1a 一种情况为部分字段为null xff0c 一种情况是全部字段均为null 部分字段为null 返回的数据格式形如 这种情况下 xff0c 只会返回 post code p
  • mysql在update语句中使用分页查询limit [offset,] rows

    在update语句中 limit 前几条是没问题的 xff0c 形如下面的写法 span class token keyword update span temp dj purchase span class token keyword s
  • 认识常见中间件-redis(一)

    Redis 是一种基于内存的数据库 xff0c 对数据的读写操作都是在内存中完成 xff0c 因此读写速度非常快 xff0c 常用于缓存 xff0c 消息队列 分布式锁等场景 Redis 提供了多种数据类型来支持不同的业务场景 xff0c
  • 线程池源码分析

    ThreadPoolExecutor的参数解释 public class ThreadPoolExecutor extends AbstractExecutorService public ThreadPoolExecutor int co
  • Ubuntu 18.04开机报错无法启动

    在虚拟机中启动Ubuntu时 xff0c 显示类似如下界面 原因 xff1a 硬盘空间不足 xff0c 所以无法启动系统了 解决方案 xff1a 1 启动系统 xff0c 在该界面单击按键shift xff08 如果是虚拟机 xff0c 要
  • win10+Xming+VSCode接远程服务器使用图形化界面(GUI)

    Xming安装 官网下载 Download下载安装下载完毕 xff0c 点开安装包 xff0c 直接按默认设置一路点击next完成安装 进入Xming的安装文件夹 xff0c 默认是 C Program Files x86 Xming xf
  • Python 判断文件是否存在,存在则删除

    span class token comment filepath为文件路径 span span class token keyword import span os span class token comment 判断文件是否存在 sp
  • arm下QT环境搭建

    第一次接触QT xff0c 发现每个人搭建环境问题都不一样 xff0c 我把我的问题和步骤写下 xff0c 以供参考 xff01 1 选择环境 xff0c QT需要安装Xwindows环境的操作系统 xff0c 开始我使用操作系统是没有图形
  • 计算机网络-聊天室的设计与实现

    计算机网络实践 一 实践设计的目的和意义二 实践设计的内容和要求三 设计用设备仪器四 实践设计的相关技术五 项目设计与实践1 设计思路2 模块描述3 运行结果 六 结束语源码与详细过程 一 实践设计的目的和意义 在互联网如此发达的今天 xf
  • python-下载某短视频平台视频(高清无水印)

    python 下载某短视频平台音视频 xff08 高清无水印 xff09 前言1 获取视频 url2 发送请求3 数据解析4 本地保存5 完整代码 前言 1 Cookie中文名称为小型文本文件 xff0c 指某些网站为了辨别用户身份而储存在