提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、操作如下:
- 总结
前言
1.发送请求,对于https: // www.acfun.cn / v / ac10863748视频详情页发送请求
2 获取数据, 获取网页源代码
3.解析数据,提取m3u8 url地址以及视频标题
4.发送请求,对于m3u8 url地址发送请求
5.保存数据
一、操作如下:
1.发送请求,对于https: // www.acfun.cn / v / ac10863748视频详情页发送请求
url="Ac--视频播放网页地址"
headers = {
"User-Agent": '自己的请求头'
}
response = requests.get(url, headers=headers)
print(response.text)
2. 获取数据, 获取网页源代码
如上图可以看到,接收的数据也在js里面,这里直接用正则的方法来获取
3.解析数据,提取m3u8 url地址以及视频标题
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('h1', class_='title').text
# print(title)
m3u8_url = re.findall('backupUrl(.*?)\"]', response.text)[0].replace('"', '').split("\\")[2]
# 使用re对js数据进行提取
对于找到的其实有backupUrlx4组,但是为啥只取第一组呢?
可以看到,下标为0的那组才是最大的,所以择优选择第一组,具体网址具体分析
4.发送请求,对于m3u8 url地址发送请求
# 4.发送请求,对于m3u8 url地址发送请求
m3u8_data = requests.get(url=m3u8_url, headers=headers).text
# print(m3u8_data)
# sub替换
m3u8_data = re.sub('#EXTM3U', "", m3u8_data)
m3u8_data = re.sub('#EXT-X-VERSION:\d', "", m3u8_data)
m3u8_data = re.sub('#EXT-X-TARGETDURATION:\d', "", m3u8_data)
m3u8_data = re.sub('#EXT-X-MEDIA-SEQUENCE:\d', "", m3u8_data)
m3u8_data = re.sub('#EXT-X-ENDLIST', "", m3u8_data)
m3u8_data = re.sub('#EXTINF:\d.\d+,', "", m3u8_data).split()
for i in tqdm(m3u8_data):
ts_url = "https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/" + i
print(ts_url)
5.保存数据
使用tqdm遍历就可以将请求网址分出来的ts直接整合,使用ab的方式进行拼接,最后得到一个完整的视频
至于为啥要拼接链接,主要是ts的连接不全,需要去NetWork中寻找匹配的网址,拼成可以播放的ts文件
for i in tqdm(m3u8_data):
ts_url = "https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/" + i
print(ts_url)
# 5.保存数据
ts_content = requests.get(url=ts_url, headers=headers).content
with open("video/"+title + ".mp4", 'ab') as f:
f.write(ts_content)
print(title + '.mp4下载完成')
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。