前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
环境使用:
-
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)
尾语 💝
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝