Python采集某xsp内容, m3u8视频内容下载

news2024/11/16 19:33:49

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

环境使用:

  • Python 3.8

  • Pycharm 专业版

模块使用:

  • import requests >>> pip install requests

  • import re 正则表达式 解析数据

  • import json

基本步骤去实现

一. 数据来源分析

  • 通过开发者工具进行抓包分析, 分析我们想要采集数据可以请求那个链接地址得到

    m3u8格式是什么样的?

    会把完整内容, 分割为N个视频片段<ts文件>

    所有片段, 都会保存在 m3u8 文件里面

  • 找m3u8链接地址 --> 通过搜索直接可以找

二. 代码实现步骤: 基本四大步骤: 发送请求 获取数据 解析数据 保存数据

  1. 发送请求

  2. 获取数据

    获取: 网页源代码

  3. 解析数据

    提取: 标题 + m3u8链接地址

  4. 发送请求

    请求: m3u8链接地址

  5. 获取数据

    获取: m3u8文件内容

  6. 解析数据

    提取: 所有ts片段

  7. 保存数据

    保存所有片段, 合并成完整内容

代码展示

# 导入数据请求模块 第三方模块, 需要安装 pip install requests
import requests
# 导入正则表达式模块 内置模块
import re
# 导入json
import json
# 导入格式化输出模块
from pprint import pprint


def get_response(html, data=None):
    # 伪装浏览器
    headers = {
        'Referer': 'https://*****',
        # User-Agent 用户代理 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=html, params=data, headers=headers)
    return response


def get_m3u8_data(html):
    html_data = get_response(html).text
    title = re.findall('"title":"(.*?)"', html_data)[1]
    # 提取视频信息: 请问 html_data 是什么数据类型  答案: 字符串
    html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', html_data)[0]
    # 转成字典数据类型
    # 完整源码、教程、资料加V:qian97378免费获取
    json_data = json.loads(html_data)
    # 字典取值
    video_url = \
    json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
    """
    4.发送请求
        请求: m3u8链接地址
    5.获取数据
        获取: m3u8文件内容
    """
    # 获取m3u8_data数据
    m3u8_data = get_response(video_url).text
    # 把没有必要的内容替换, split分割
    m3u8_data = re.sub('#E.*', '', m3u8_data).split()
    return title, m3u8_data


def save(ts_url, title):
    # 请求ts链接获取二进制数据
    ts_content = get_response(ts_url).content
    """
    7.保存数据
        保存所有片段, 合并成完整内容
    """
    with open('video\\' + title + '.mp4', mode='ab') as f:
        # 写入数据
        f.write(ts_content)
    print(ts_url)


def get_ac(page):
    url = 'https://*****/u/29946310'
    data = {
    完整源码、教程、资料加V:qian97378免费获取
        'quickViewId': 'ac-space-video-list',
        'reqID': '1',
        'ajaxpipe': '1',
        'type': 'video',
        'order': 'newest',
        'page': page,
        'pageSize': '20',
        't': '1687179435071',
    }
    ac_data = get_response(html=url, data=data).text
    video_id_list = re.findall('"atomid.*?:.*?"(\d+).*?"', ac_data)
    return video_id_list


def main(ac):
    link = f'https://****/v/ac{ac}'
    title, m3u8_data = get_m3u8_data(html=link)
    ts_url_list = ['https://ali-safety-video.*****cn/mediacloud/acfun/acfun_video/' + ts for ts in m3u8_data]
    for ts_url in ts_url_list:
        save(ts_url, title)


if __name__ == '__main__':
    # for page in range(1, 30):
    #     video_id_list = get_ac(page)
    #     for video_id in video_id_list:
    #         main(ac=video_id)
    import subprocess
    word = input('请输入你想要下载地址: ')
    cmd = f'you-get {word}'
    subprocess.run(cmd)

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

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

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

相关文章

轻松构建交互式应用程序:探索Gradio Components模块的神奇世界!

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

抽头延迟线信道模型

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 时变多径信道的信道…

突破技术边界,开创“粽“享未来

突破技术边界&#xff0c;开创“粽“享未来 端午节的由来端午节的习俗端午祈福 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读…

南京阿里云代理商:阿里云服务器的可扩展性和弹性如何?是否支持按需付费?

南京阿里云代理商&#xff1a;阿里云服务器的可扩展性和弹性如何&#xff1f;是否支持按需付费&#xff1f;   一、阿里云服务器的可扩展性   阿里云作为业界知名的云服务提供商&#xff0c;其服务器具有极强的可扩展性。可扩展性主要体现在以下几方面&#xff1a;   1. …

行为型模式--状态模式

目录 举例 状态模式 定义 结构 代码实现 优缺点 优点&#xff1a; 缺点&#xff1a; 使用场景 举例 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一 种状态改变&#xff0c;都…

Xdebug的安装及使用

Xdebug的安装及使用 前言一、Xdebug如何配置二、PHPstrom配置三、Xdebug的使用1.面板功能解释2.调试功能详解 四、Xdebug原理 前言 软件调试是泛指重现软件缺陷问题,定位和 查找问题根源,最终解决问题的过程,编写的程序不可能一直不出错&#xff0c;所以调试很重要调试通常有如…

西安阿里云代理商:阿里云服务器的可扩展性和弹性如何?是否支持按需付费?

西安阿里云代理商&#xff1a;阿里云服务器的可扩展性和弹性如何&#xff1f;是否支持按需付费&#xff1f;   一、阿里云服务器的可扩展性   阿里云作为业界知名的云服务提供商&#xff0c;其服务器具有极强的可扩展性。可扩展性主要体现在以下几方面&#xff1a;   1. …

小米note3刷机-从miui12刷回miui9

小米note3刷机-从miui12刷回miui9 文章目录 小米note3刷机-从miui12刷回miui9解除BL锁进入开发者模式遇到的问题解决BootLoader无法连接电脑的问题 导包 3月份原本想买一部小米6回来刷机,结果发现小米6的二手价格有一点点high。然后就选了一个 大平版 小米note3 但是直到昨天…

SpringBoot 如何使用 Logback 进行日志记录

SpringBoot 如何使用 Logback 进行日志记录 在开发 Web 应用程序时&#xff0c;日志记录是非常重要的一部分。日志可以帮助我们跟踪应用程序的运行情况&#xff0c;并帮助我们快速地排查问题。在 SpringBoot 中&#xff0c;我们可以使用 Logback 进行日志记录。Logback 是一款…

F407/103MAP文件

认识MAP文件 MDK编译工程&#xff0c;会生成一些中间文件&#xff08;如.o、.axf、.map 等&#xff09;&#xff0c;最终生成hex文件&#xff0c;以便下载到MCU上面执行。这些文件分为 11 个类型&#xff0c;其中4种文件比较重要。 比如&#xff1a; 本文主要讲解map文件。 map…

第四章 死锁

目录 一、死锁的概念 1.1 什么是死锁 1.2 死锁、饥饿、死循环的区别 1.2.1 死锁 1.2.2 饥饿 1.2.3 死循环 1.2.4 三者间的异同 1.3 死锁产生的必要条件 1.3.1 互斥条件 1.3.2 不剥夺条件 1.3.3 请求和保持条件 1.3.4 循环等待条件 1.4 什么时候会发生死锁 1.5 …

深入理解Java中的synchronized

文章目录 前言正文一、多线程操作同一数据时的问题二、问题分析三、synchronized 解决问题四、synchronized 是怎么解决问题的五、Java1.6时的优化5.1 自旋锁5.2 自适应锁5.3 锁消除5.4 锁粗化5.5 偏向锁&#xff08;单线程高效场景&#xff09;5.2 轻量级锁&#xff08;多线程…

MySQL数据表查询

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;进入MySQL知识专…

IO、存储、文件系统的简单介绍

目录 一.什么是IO 第一类:存储器IO 第二类:设备IO 二.存储 三:文件系统 总结 一.什么是IO I(input):放入数据 O(output):取出数据 所以我们平时说的IO,实际上就是放入数据和存储数据的意思 在这里,我们一般将IO又分为两大类 第一类:存储器IO 这类IO主要针对的是计算机中…

2023年最新同步网盘排行榜,了解哪些平台适合您的文件同步需求!

在数码领域&#xff0c;同步盘是一个极其受欢迎的工具&#xff0c;它可以帮助人们在不同设备之间共享文件。作为同步盘用户&#xff0c;我们关心的一个很重要的问题就是&#xff0c;在同步盘市场上&#xff0c;哪些同步盘是最好的&#xff1f; 今天我们综合了不同的产品测评网站…

Vulnhub: Corrosion:2靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.131 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.131 通过nmap脚本枚举出8080端口存在backup.zip文件&#xff0c;下载后解压发现需要密码&#xff0c;利用john爆破压缩包密…

【SSM项目整合流程】

目录 一.用Maven创建一个project项目 1.1新建一个项目&#xff0c;选择Maven然后点击下一步 1.2设置项目名称和AGV后点击完成 1.3在pom.xml文件中导入依赖和配置打包方式 二.添加web工程 2.1在Project Structure中型添加一个web工程 2.2配置web.xml 三.创建SpringMVC的…

2.设置Salesforce开发环境

文章目录 前言1. 关于Salesforce DX环境2. 配置Visual Studio Code2.1 安装CLI2.2 设置Visual Studio Code 3. 创建一个Hello World Lightning web component 来检证开发环境3.1 创建一个Salesforce DX project3.2 将deploy好的组件加到lightning App中 前言 此处解释关于本文…

数据结构——C语言实现常见排序(插入排序、希尔排序、选择排序、堆排序、冒泡排序)

引言&#xff1a; 现在是北京时间2023年6月23日13点19分&#xff0c;度过了一个非常愉快的端午节。由于刚从学校回家&#xff0c;一下子伙食强度直升了个两三个档次。这也导致我的肠胃不堪重负&#xff0c;我也准备等会去健身房消耗一下盈余的热量。回到家陪伴爷爷走人生最后的…

C++11 线程库—线程操作(更新中)

前言 在C11推出线程库前&#xff0c;Windows和Linux操作系统的线程操作并不同&#xff0c;这就导致多线程程序无法跨平台&#xff0c;如果想要跨平台&#xff0c;会很麻烦并且容易出错。C11推出的线程库就解决了这一问题。 因为在Windows和Linux操作系统中有一些独特的常量&am…