栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

requests爬取视频片段并整合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

requests爬取视频片段并整合

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
    • 1.发送请求,对于https: // www.acfun.cn / v / ac10863748视频详情页发送请求
    • 2. 获取数据, 获取网页源代码
    • 3.解析数据,提取m3u8 url地址以及视频标题
    • 4.发送请求,对于m3u8 url地址发送请求
    • 5.保存数据
  • 一、操作如下:
    • 1.发送请求,对于https: // www.acfun.cn / v / ac10863748视频详情页发送请求
    • 2. 获取数据, 获取网页源代码
        • 如上图可以看到,接收的数据也在js里面,这里直接用正则的方法来获取
    • 3.解析数据,提取m3u8 url地址以及视频标题
        • 对于找到的其实有backupUrlx4组,但是为啥只取第一组呢?
        • 可以看到,下标为0的那组才是最大的,所以择优选择第一组,具体网址具体分析
    • 4.发送请求,对于m3u8 url地址发送请求
    • 5.保存数据
          • 使用tqdm遍历就可以将请求网址分出来的ts直接整合,使用ab的方式进行拼接,最后得到一个完整的视频
          • 至于为啥要拼接链接,主要是ts的连接不全,需要去NetWork中寻找匹配的网址,拼成可以播放的ts文件
  • 总结


前言 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下载完成')
总结

这是对爬取视频的一次体验,也开启了我对视频爬取的新征程,闲暇时刻可以挑战一下自己,当然,只是自己拿来学习练习的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号