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

环境使用:
-  
Python 3.8
 -  
Pycharm
 
模块使用:
-  
import requests >>> pip install requests
 -  
import re 正则表达式 解析数据
 -  
import json
 
本次案例所用知识点:
python基础语法:
-  
字典创建/取值
 -  
print输出函数使用
 -  
字符串创建
 -  
列表取值
 -  
for循环遍历
 -  
open函数数据保存
 -  
函数关键字传参
 -  
数据类型转换 json
 
python爬:
-  
开发者工具使用
 -  
re正则简单使用 --> findall sub .*?
 -  
requests简单使用 --> get请求
 
数据来源分析
视频内容数据在什么地方
通过开发者工具进行抓包分析, 相应视频数据内容
普通视频: 完整视频数据 2:18
m3u8视频: 把 2:18 视频内容, 分割为N个视频片段 --> 每一个视频片段都有一个链接<ts结尾>
 把整体视频内容, 分成N个ts文件 --> 包含在一个m3u8文件
找视频对应 m3u8文件链接 <所有视频片段都在这个文件链接>
代码展示
import requests
import re
import json
from pprint import pprint
link = 'https://****/u/29946310'
data = {
    'quickViewId': 'ac-space-video-list',
    'reqID': '8',
    'ajaxpipe': '1',
    'type': 'video',
    'order': 'newest',
    'page': '2',
    'pageSize': '20',
    't': '1678106764506',
}
headers = {
    # 浏览器基本信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
list_data = requests.get(url=link,params=data, headers=headers).text
video_id_list = re.findall('"atomid.*?":.*?"(\d+).*?",', list_data)
for video_id in video_id_list:
    print(video_id)
    url = 'https://*****/v/ac35510357'
    # 模拟浏览器
    源码、解答、教程可+V:qian97378
    headers = {
        # 浏览器基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    print(response)
    title = re.findall('"title":"(.*?)",', response.text)[1]
    html_data = re.findall('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
    m3u8_data = re.sub('#E.*', '', m3u8_data).split()
    print(title)
    print(m3u8_url)
    print(m3u8_data)
    for ts in m3u8_data:
        ts_url ='https://*****' + ts
        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)
 


尾语 💝
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝




















