Python采集某网站小视频内容, m3u8视频内容下载

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

环境使用:

  • python 3.8 运行代码

  • pycharm 2021.2 辅助敲代码

模块使用:

  • import requests >>> pip install requests

内置模块 你安装好python环境就可以了

  • import re

  • import json

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

代码实现步骤

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

    请求链接: <视频播放页>

  2. 获取数据, 获取服务器返回响应数据

    开发者工具: response

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

    • m3u8文件链接

    • 视频标题

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

    请求链接: m3u8文件链接

  5. 获取数据, 获取服务器返回响应数据

    开发者工具: response <m3u8返回数据>

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

    所有ts视频片段链接

  7. 保存数据, 把所有的视频片段获取下来, 整合成一个完整视频内容

代码展示

# 导入数据请求模块
import requests
# 导入正则表达式
import re
# 导入json模块
import json
# 导入格式化输出模块
from pprint import pprint
# 模拟浏览器 请求头, 字典数据 <根据网站可以选择添加某些参数>
headers = {
    # 用户代理 表示浏览器基本身份信息
    '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'
}
link = 'https://****/u/29946310?quickViewId=ac-space-video-list&reqID=3&ajaxpipe=1&type=video&order=newest&page=2&pageSize=20&t=1689859405043'
link_data = requests.get(url=link, headers=headers).text
video_id_list = re.findall('"atomid.*?":.*?"(\d+).*?",', link_data)
for video_id in video_id_list:
    # 请求链接
    url = f'https://****/v/ac{video_id}'
    # 发送请求
    response = requests.get(url=url, headers=headers)
    # 视频标题
    title = re.findall('"title":"(.*?)",', response.text)[1]
    print(title)
    # 提取视频信息 <m3u8>
    html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
    json_data = json.loads(html_data)
    m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
    m3u8_data = requests.get(url=m3u8_url, headers=headers).text
    # 替换 <删除>
    ts_info = re.sub('#E.*', '', m3u8_data).split()
    # for循环
    page = 1
    for ts in ts_info:
        # https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/3312e674b5c67510-0246f3db30d62240df35dfbd9db8fa1d-hls_720p_hevc_1.00000.ts?pkey=ABAWBr0wZN0700m3-3VDmVvb7FvV2zLnb14EBXZyRHSRddtlEBs9Z-DUrG9j26dmhfmBEs9kKtBWg4mx5TlnFdinobquiqeov-oH78KRaMcTgs3q5JYYMGNczJZ_iqalak9u1mZ722SqzCrfgZKMUaqLxKyt-zeSO7V-4mb6KRNBOVt8hM_aM6A8f1b0hLJyfhtr36NpBjzaMPKs60hFgyC-hEE_KGQwy9quolHFEZL_fu4OGvufzYXjv67HCel70j8&safety_id=AAKH9HGH666PSGDPyU_krf7H
        ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts
        # 获取视频的二进制数据
        content = requests.get(url=ts_url, headers=headers).content
        with open('video\\' + f'{title}.mp4', mode='ab') as f:
            f.write(content)
        page += 1
        print(ts_url)

尾语

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值