Python采集某网站m3u8内容,美女我来了~

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

又到了学Python时刻~


环境使用:

  • Python 3.8

  • Pycharm


模块使用:

  • import requests >>> pip install requests

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

  • import json

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令


基本思路流程: <通用>

一. 数据来源分析:
  1. 明确需求:

    采集是什么网站

    采集是什么数据

    • shipin内容

    • shipin标题

  2. 分析我们想要的数据内容, 是请求那个url地址可以得到的

    • 通过开发者工具进行抓包分析

      1. 打开开发者工具: F12 或者 鼠标右键点击检查选择network

      2. 刷新网页

      3. 分析shipin内容在哪里?

shipin内容: m3u8视频格式

正常shipin: 2分09秒 整体

m3u8: 把整体内容, 分成N个片段 <单独ts文件>, 所有片段 <ts文件> 包含在 m3u8 文件里面

获取内容 —> 获取所有ts文件<片段> —> 获取 m3u8 文件链接 —> 网页源代码里面

二. 代码实现步骤:
  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取网页源代码

  3. 解析数据, 提取我们想要的数据内容

    • 标题

    • m3u8 文件链接

  4. 发送请求, 模拟浏览器对于url地址发送请求

    m3u8 文件链接 发送请求

  5. 获取数据, 获取ts文件内容

  6. 解析数据, 提取我们想要的数据内容

    所有ts文件链接 <视频片段>

  7. 保存数据, 所有片段保存下来, 然后合并成完整内容


代码展示

导入模块

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

“”"

1. 发送请求, 模拟浏览器对于url地址发送请求

  • 伪装模拟 headers 请求头

在开发者工具里面进行复制粘贴

“”"

请求链接

PS:本篇完整源码如有需要的小伙伴可以加下方的群去找管理员免费领取

伪装模拟

headers = {
    # user-agent 用户代理, 表示浏览器基本身份信息
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}

发送请求

调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据

response = requests.get(url=url, headers=headers)

<Response [200]> 响应对象, 请求成功了

print(response)

“”"

2. 获取数据, 获取网页源代码

response.text 获取响应文本数据

3. 解析数据, 提取我们想要的数据内容

  • 视频标题

  • m3u8 文件链接

正则表达式 re

  • re.findall(‘匹配什么数据’, ‘从什么地方匹配’) 找到所有我们想要的数据内容

“”"

提取视频标题

title = re.findall('"title":"(.*?)",', response.text)[1]

提取m3u8文件链接

html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]

转成字典数据类型 type() 内置函数, 查看数据类型

json_data = json.loads(html_data)

键值对取值 --> 根据冒号左边的内容[键], 提取冒号右边的内容[值]

m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
print(title)
print(m3u8_url)

“”"

4. 发送请求, 模拟浏览器对于url地址发送请求

m3u8 文件链接 发送请求

5. 获取数据, 获取ts文件内容

6. 解析数据, 提取我们想要的数据内容

所有ts文件链接 <视频片段>

  • 提取所有ts文件

  • 删除掉所有我们不要的

“”"

m3u8_data = requests.get(url=m3u8_url, headers=headers).text

把什么内容,替换成什么,从什么地方替换 split() 分割成列表

m3u8_data = re.sub('#E.*', '', m3u8_data).split()

for循环遍历, 把列表里面元素一个一个提取出来

for ts in m3u8_data:

字符串拼接, 构建完整

“”"

7. 保存数据, 所有视频片段保存下来, 然后合并成完整视频内容

  • 发送请求, 获取数据内容

  • 然后再进行保存

“”"

    ts_content = requests.get(url=ts_url, headers=headers).content
    with open('video\\' + title + '.mp4', mode='ab') as f:
        f.write(ts_content)
    print(ts_url)

效果展示




尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~

不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 💞 感谢 💐

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 很高兴为你提供帮助。你可以使用python-m3u8库来实现m3u8下载器,它是一个支持HTTP Live Streaming(HLS)的Python库,可以让你轻松解析m3u8文件并下载其中的媒体文件。 ### 回答2: 当然可以为您编写一个简单的m3u8下载器,使用Python的requests库和m3u8库。 首先,您需要安装这两个库。您可以使用pip命令在命令行中安装它们: ``` pip install requests m3u8 ``` 然后,您可以使用以下代码编写m3u8下载器: ```python import requests from m3u8 import M3U8 def download_m3u8(url, output_file): # 发送GET请求获取m3u8文件内容 response = requests.get(url) m3u8_content = response.text # 解析m3u8文件 m3u8 = M3U8(m3u8_content, base_uri=response.url) # 创建一个空的输出文件 with open(output_file, 'wb') as f: # 遍历所有的分片 for segment in m3u8.segments: segment_url = segment.absolute_uri # 发送GET请求获取分片内容 response = requests.get(segment_url) # 将分片内容写入输出文件 f.write(response.content) print('下载完成。') # 测试下载器 url = 'https://example.com/video.m3u8' # 替换为实际的m3u8文件URL output_file = 'output.ts' # 替换为您希望保存的输出文件名 download_m3u8(url, output_file) ``` 上述代码会请求给定的m3u8文件URL,解析其中的分片信息,并逐个下载分片内容保存到输出文件中。 请注意,这只是一个简单的示例,并未考虑m3u8文件中可能存在的保护、加密或压缩等情况。在实际使用中,可能需要根据具体情况进行适当的处理和优化。 希望这可以帮到您!如有其他问题,请随时提问。 ### 回答3: 当然可以!下面是一个简单的Python脚本,可以用来下载m3u8视频文件。 ```python import requests def download(url): response = requests.get(url) file_name = url.split('/')[-1] with open(file_name, 'wb') as file: file.write(response.content) print('文件下载完成!') def main(): m3u8_url = input('请输入m3u8视频的URL地址:') download(m3u8_url) if __name__ == '__main__': main() ``` 使用方法: 1. 将上述代码保存为一个Python脚本文件,例如 "m3u8_downloader.py"。 2. 打开终端或命令提示符窗口,并进入脚本文件所在的目录。 3. 运行脚本文件:在终端或命令提示符中输入 "python m3u8_downloader.py"。 4. 脚本会提示你输入m3u8视频的URL地址,输入完毕后按回车键。 5. 脚本会自动下载m3u8视频文件,并保存在当前目录下。 请注意,这只是一个简单的示例代码,可能无法适用于所有情况。在实际使用中,你可能还需要处理一些特殊情况,例如视频的分片下载、合并等。但这个代码可以作为一个起点,帮助你开始编写一个更复杂的m3u8下载器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值