머리말
안녕하세요~ 여러분 안녕하세요 샤오만입니다❤~!
환경 사용:
- Python 3.8 실행 코드
- pycharm 2021.2는 코드 입력을 지원합니다.
모듈 사용법:
- 가져오기 요청 >>> pip 설치 요청
내장 모듈의 경우 Python 환경만 설치하면 됩니다.
- 다시 가져오기
- JSON 가져오기
코드 구현 단계
1. 요청을 보내고 URL 주소로 요청을 보내는 브라우저를 시뮬레이션합니다.
요청링크 : <동영상 재생 페이지>
2. 데이터를 가져오고 서버에서 반환된 응답 데이터를 가져옵니다.
개발자 도구: 응답
3. 데이터를 구문 분석하고 필요한 데이터 콘텐츠를 추출합니다.
- m3u8 파일 링크
- 비디오 제목
4. 요청을 보내고 URL 주소로 요청을 보내는 브라우저를 시뮬레이션합니다.
요청 링크: m3u8 파일 링크
5. 데이터를 가져오고 서버에서 반환된 응답 데이터를 가져옵니다.
개발자 도구: 응답 <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)
# 源码、解答、教程、安装包等资料加V:xiaoyuanllsll免费领
코다
제 글을 읽어주셔서 감사합니다~
이 글이 여러분에게 도움이 되기를 바라며, 지식을 얻으셨기를 바랍니다~
배움에는 끝이 없고, 더 나은 자신이 되기를 바랍니다. (함께 열심히 합시다.)