当前位置: 首页 > article >正文

Python +Pyqt5 简单视频爬取学习及工具实现(二)

前言

一、通过主网址,获取HTML所有内容;

二、解析HTML,自动获取m3u8索引文件

三、通过每个视频的索引文件,下载视频流;

四、判断视频流是否需要自动进行格式转化和解密;

五、判断视频流自动合并后是否清除原有ts视频;

六、演示1【下载单个视频】

七、演示2【下载多个视频】

总结



前言

目的:将网站上的m3u8视频下载到本地,包含多个视频自动下载-----仅娱乐使用;

这一次以假面骑士视频作为实例,随便,回顾曾经的热血.......哈哈哈

流程:

  1. 通过主网址,获取HTML所有内容;
  2. 解析HTML,自动获取m3u8索引文件;
  3. 通过每个视频的索引文件,下载视频流;
  4. 判断视频流是否需要自动进行格式转化和解密;
  5. 判断视频流自动合并后是否清除原有ts视频;
  6. 演示1【下载单个视频】;
  7. 演示2【下载多个视频】;

一、通过主网址,获取HTML所有内容;

代码实现如下:

import random
import requests

# 主网址
m3u8_url = "https://dayuya.com/index.php/vod/play/id/25251/sid/2/nid/1.html"
# User-Agent 即用户代理,在网站中可以查询
hea = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0"
user_agent_list = [
                # 在这里可以写多个headers,然后随机选一个进行访问,这样可以防止频繁访问ip被封
                hea,
            ]
headers = {
    'user-agent': random.choice(user_agent_list),
    'Connection': 'close',
}

resp = requests.get(m3u8_url, headers, verify=False)
data = resp.text
print(data)


二、解析HTML,自动获取m3u8索引文件

也就是分析HTML内容,从中查询出m3u8索引文件(其他格式的视频流,如果没有索引文件的话,嗯,这边建议只找m3u8格式(*^▽^*))

首先,我们需要知道索引文件在元素哪里,如下图所示:

注意:查询该地址时,需要确认是否查找正确,url索引文件必须正确。

根据网页元素,我们使用正则表达式从HTML内容中(字符串)查询出我们需要的数据

代码实现如下:

import random
import requests

# 主网址
m3u8_url = "https://dayuya.com/index.php/vod/play/id/25251/sid/2/nid/1.html"
# User-Agent 即用户代理,在网站中可以查询
hea = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0"
user_agent_list = [
                # 在这里可以写多个headers,然后随机选一个进行访问,这样可以防止频繁访问ip被封
                hea,
            ]
headers = {
    'user-agent': random.choice(user_agent_list),
    'Connection': 'close',
}

resp = requests.get(m3u8_url, headers, verify=False)
data = resp.text
print(data) 

import re

find = "{}(.*?){}".format("data-play","m3u8")
# print(find)
data = re.findall(find,data)[0]
data = data + "m3u8"
print("\nindex地址:",data)

这是一个视频的索引文件获取流程,其他视频流的获取过程一样,只是主网址不同而已。

如下图所示:(视频第二集视频)


三、通过每个视频的索引文件,下载视频流;

这里就可以看Python +Pyqt5 简单视频爬取学习(一)

其中的流程一样的,没什么区别。

注意:这里有时候下载ts视频会失败,会被网站拒绝或者限制或者请求不完全,各种异常,这种情况下,就是换主网址视频源的线路,或者换其他网站,反正流程都是一样的,能下载下来就行,当然,你也可以尝试解决这些问题。


四、判断视频流是否需要自动进行格式转化和解密;

很简单,通过只读取index索引文件前十行,从中就可以获取到视频下载的格式是否需要自动转化和解密。

五、判断视频流自动合并后是否清除原有ts视频;

这里我是通过配置文件来决定是否自动清除原视频

代码实例如下:

from configparser import ConfigParser

cp = ConfigParser()
cp.read("./config/save.ini",encoding="utf-8")

print(cp.items("configs"))  # 获取cmd节点下的所有键值对
print(cp.sections())        # 获取所有的节点

shuju= cp.get("configs", "Find_first") # 获取thread_sleepd的值

print(shuju) 
print(type(shuju))

然后,用os.remove(paths) 便可清除视频,paths:视频的路径。


六、演示1【下载单个视频】

界面部分参数解释:


七、演示2【下载多个视频】


总结

虽然不能适配所有网站的资源下载,但个人使用已经满足要求了,下下视频,看看啥的,够用了,反正比网站上看视频要快很多(≖‿≖)✧ ,::ೖ(⑅σ̑ᴗσ̑)ೖ::┏(^0^)┛


http://www.kler.cn/a/406638.html

相关文章:

  • 前端速通(JavaScript)
  • 常用Adb 命令
  • 提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
  • 日常开发记录-正确的prop传参,reduce搭配promise的使用
  • 【Stable Diffusion】 超大尺寸绘制、分区控制,详解Tiled Diffusion VAE插件功能
  • 解决vue-pdf的签章不显示问题
  • 5.STM32之通信接口《精讲》之USART通信---实验串口接收程序
  • 关于汽车多核架构
  • 算法专题十一: 基础递归
  • Tomcat 任意写入文件漏洞(CVE-2017-12615)
  • docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)
  • 10 分钟,教你如何用 LLama-Factory 训练和微调 LLama3 模型
  • 计算机网络(14)ip地址超详解
  • Vision-Language Models for Vision Tasks: A Survey 论文解读
  • 【代码随想录day36】【C++复健】1049. 最后一块石头的重量 II ; 494. 目标和 ;474.一和零
  • MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities
  • SSRF漏洞利用
  • Unity——使用Unity制作BIM全景视频、图片
  • C#语言入门
  • 02 DHCP搭建
  • 服务器被隔离导致无法登录
  • 运维之网络安全抓包—— WireShark 和 tcpdump
  • 在SpringBoot项目中集成MongoDB
  • 测评部署和管理 WordPress 最方便的面板
  • Sqlsugar Oracle 配置 和服务注册以及使用
  • 图文详解Docker下配置、测试Redis