一般网站的视频都是分段加载的,简单说就是把一个视频切成多个片段来加载,每个分段都会有不同的url地址。

这些url地址列表,会存放在一个.m3u8文件里。

首页打开待爬取的页面获取ts文件列表,按F12查看页面内容,ctlr+F 搜索 m3u8,找到这个地址。

Ps:这个网站是个少儿不宜的网站,所以具体链接我就不贴出来了

然后我们拿到这个地址,去读取里面内容。

import requests
url="https://xxx.sdhdbd1.com/52av/20210629/A%e5%9b%bd%e4%ba%a7%e8%87%aa%e6%8b%8d/%e8%ba%ab%e6%9d%90%e5%be%88%e6%98%af%e8%8b%97%e6%9d%a1%e9%98%b4%e6%af%9b%e5%a4%9a%e5%a4%9a%e6%8f%89%e5%a5%b6%e6%8e%b0%e7%a9%b4/SD/playlist.m3u8"
res=requests.get(url).text
print(res)

打印结果:

把ts列表中的内容用正则提取出来 ,放入列表,备用

ts=re.findall(r"(\d+).ts",res,flags=re.S)
print(ts)

鼠标点击下播放页面的视频,我们来查看下视频播放时的请求:

没错,他就是在分段加载视频到浏览器!

然后在当前目录建立个ts文件夹,挨个把这些ts文件下载下来,(多线程更好,但我懒得写)

url_prifix="https://xxx.sdhdbd1.com/52av/20210629/A%e5%9b%bd%e4%ba%a7%e8%87%aa%e6%8b%8d/%e8%ba%ab%e6%9d%90%e5%be%88%e6%98%af%e8%8b%97%e6%9d%a1%e9%98%b4%e6%af%9b%e5%a4%9a%e5%a4%9a%e6%8f%89%e5%a5%b6%e6%8e%b0%e7%a9%b4/SD/"
for i in ts:
    u=url_prifix+i+".ts"
    r=requests.get(url=u,headers=headers).content
    print(i,u)
    with open('./ts/'+i+'.ts',mode="wb") as file:
        file.write(r)

最后再合并这些ts文件,得出完整视频:

os.system("copy /b /ts/*.ts heel.ts")

搞定收工!( 以上内容仅供学习交流,请勿做违法的事哦

完整代码:

import requests
import re
import os
url_prifix="https://xxx.sdhdbd1.com/52av/20210629/A%e5%9b%bd%e4%ba%a7%e8%87%aa%e6%8b%8d/%e8%ba%ab%e6%9d%90%e5%be%88%e6%98%af%e8%8b%97%e6%9d%a1%e9%98%b4%e6%af%9b%e5%a4%9a%e5%a4%9a%e6%8f%89%e5%a5%b6%e6%8e%b0%e7%a9%b4/SD/"
url="https://xxx.sdhdbd1.com/52av/20210629/A%e5%9b%bd%e4%ba%a7%e8%87%aa%e6%8b%8d/%e8%ba%ab%e6%9d%90%e5%be%88%e6%98%af%e8%8b%97%e6%9d%a1%e9%98%b4%e6%af%9b%e5%a4%9a%e5%a4%9a%e6%8f%89%e5%a5%b6%e6%8e%b0%e7%a9%b4/SD/playlist.m3u8"
# 获取m3u8文件
res=requests.get(url).text
print(res)
# 正则提取内容
ts=re.findall(r"(\d+).ts",res,flags=re.S)
print(ts)
# 从网页上复制下来的请求头
headers = {
  'authority': 'xxx.sdhdbd1.com',
  'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
  'sec-ch-ua-mobile': '?0',
  'upgrade-insecure-requests': '1',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
  'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
  'sec-fetch-site': 'none',
  'sec-fetch-mode': 'navigate',
  'sec-fetch-user': '?1',
  'sec-fetch-dest': 'document',
  'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6'
for i in ts:
    # 拼接完整的ts文件下载链接
    u=url_prifix+i+".ts"
    r=requests.get(url=u,headers=headers).content
    print(i,u)
    # 二进制写入到本地
    with open('./ts/'+i+'.ts',mode="wb") as file:
        file.write(r)
#利用cmd命令将.ts文件合成为mp4格式
os.system("copy /b /ts/*.ts heel.mp4")
print("转换成功")
一般网站的视频都是分段加载的,简单说就是把一个视频切成多个片段来加载,每个分段都会有不同的url地址。这些url地址列表,会存放在一个.m3u8文件里。首页打开待爬取的页面获取ts文件列表,按F12查看页面内容,ctlr+F 搜索 m3u8,找到这个地址。然后我们拿到这个地址,去读取里面内容。import requestsurl="https://xxx.sdhdbd1.com/52av/20210629/A%e5%9b%bd%e4%ba%a7%e8%87%aa%e6%8b%
python 爬虫 相关: 由于很多网站上的视频只提供在线观看,没有下载入口,故有必要进行网络 爬虫 获取视频资源。 利用reques ts 获取网页源代码中的m3u8链接,对链接进行逐步解析,获取 ts 列表,下载所有 ts 文件 ,将其 合并 生成mp4 文件 。做到对视频的 爬取 。 同名博文相关代码。
python 多线程 爬取 加密后 ts 文件 ,解密后合成mp4视频 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python 多线程 爬取 加密后 ts 文件 ,解密后合成mp4视频前言一、分析 页面 二、视频解密写在最后 续我前几天发布的上篇博客: python 多线程 爬取 ts 文件 并合成mp4视频,说道爬视频有三种级别,上篇的例子属于中等级别,那么接下来的这篇是困难级别的。 其实,这里再修正一下,爬视频应该不止是3种级别,还有很多更加困难的网站。 所以,学无止境,尽管路途遥远,也要勇往直
最近学习 Python ,语法规则、变量等也看完了,但是觉得啥也没记住,打开 py不知道写啥,只能print(“xxx”)(ps:此处手动尴尬)。听说py网络 爬取 挺不错就想着,通过 爬取 网上的电影来增加兴趣吧,找了一些电影网站, F12后发现很多网站上电影格式都是 ts 分流的 ts 这个东东也是刚知道的。 ts 流数据简单理解就是把一个高清电影分割成成千上万个 ts 格式的小 文件 。这 些小 文件 的时长、顺序以及加密方式都放在一个xxx.m3u8 文件 中,所以只要 下载m3u8 文件 ,然后构造并下载所有 ts 文件 就可以将
Python 爬取 页面 可以通过多种方式实现,最常见的是使用 Python 的reques ts 和beautifulsoup库。 首先,使用reques ts 库发送HTTP请求获取要 爬取 页面 内容。通过引入reques ts 库可以方便地发送HTTP请求并获得响应。这里使用reques ts 库需要掌握get和post方法的使用,也需要了解如何设置请求头、请求参数和Cookie等信息。 接下来,使用beautifulsoup库对 页面 进行解析,提取需要的数据。BeautifulSoup是 Python 中一个优秀的HTML/XML解析库,它可以用来提取 页面 中的数据或链接,或方便地迭代DOM树。 通过以上步骤,就可以实现 Python 爬取 页面 的基本功能,核心代码如下: import reques ts from bs4 import BeautifulSoup url = "http://www.example.com" headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} response = reques ts .get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") print(soup.title) #输出 页面 标题 要注意的是,在 爬虫 的过程中,需要遵守相关法律法规和网站的robo ts 协议,以避免不必要的法律纠纷。此外,需要处理一些反 爬虫 措施,如IP封锁、验证码等。