以cupfox.in为例子:
观察ts文件和m3u8文件,可以知道一个完整的视频是由多个ts文件组合,而m3u8则是记录全部ts文件信息的文本
思路
1.先爬一个ts,测试能否观看
2.爬m3u8文件,通过正则分析出变革的部门
3.完整的把每个ts趴下来组合起来。
1.一个ts
- import requests
- url = 'https://v.cdnlz3.com/20240802/25255_00ff1a4b/2000k/hls/819a23c20b1000173.ts'
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
- 'referer':'https://www.cupfox.in/'
- }
- response = requests.get(url)
- print(response.status_code)
- with open('video.ts', 'wb') as f:
- f.write(response.content)
复制代码
2.观察m3u8文件内容
分析得出:819a23c20b1000(.*?).ts
3.完整代码:
- import re
- import requests
- import time
- import random
- def get_m3u8():
- '''
- 获取m3u8文件
- '''
- url = 'https://v.cdnlz3.com/20240802/25255_00ff1a4b/2000k/hls/index.m3u8'
- resp = requests.get(url).text
- # print(resp)
- ts_list = re.findall('819a23c20b1000(.*?).ts', resp)
- return ts_list
- def get_response(ts_list):
- for ts in ts_list:
- url = f'https://v.cdnlz3.com/20240802/25255_00ff1a4b/2000k/hls/819a23c20b1000{ts}.ts'
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
- 'referer':'https://www.cupfox.in/'
- }
- response = requests.get(url, headers=headers)
- try:
- with open('video.ts', 'ab') as f:
- f.write(response.content)
- print(f'下载完成,{ts+1}/{len(ts_list)}')
- time.sleep(random.uniform(1, 2))
- except Exception as e:
- print('报错原因是',e)
- if __name__ == '__main__':
- '''
- 关键词.m3u8,它是一个文本文件,里面包含了多个ts
- '''
- a = get_m3u8() # 通过分析得出 # ts_list = re.findall('819a23c20b10(.*?).ts)', resp)
- get_response(a)
复制代码 乐成拿到,时长精确:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |