前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

前文内容

Python爬虫新手入门教学(一):爬取豆瓣电影排行信息

Python爬虫新手入门教学(二):爬取小说

Python爬虫新手入门教学(三):爬取链家二手房数据

Python爬虫新手入门教学(四):爬取前程无忧招聘信息

Python爬虫新手入门教学(五):爬取B站视频弹幕

Python爬虫新手入门教学(六):制作词云图

Python爬虫新手入门教学(七):爬取腾讯视频弹幕

Python爬虫新手入门教学(八):爬取论坛文章保存成PDF

Python爬虫新手入门教学(九):多线程爬虫案例讲解

Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸

Python爬虫新手入门教学(十一):最近王者荣耀皮肤爬取

Python爬虫新手入门教学(十二):英雄联盟最新皮肤爬取

Python爬虫新手入门教学(十三):爬取高质量超清壁纸

Python爬虫新手入门教学(十四):爬取有声小说网站数据

Python爬虫新手入门教学(十五):爬取网站音乐素材

Python爬虫新手入门教学(十六):爬取好看视频小视频

Python爬虫新手入门教学(十七):爬取yy全站小视频

Python爬虫新手入门教学(十九):爬取ip代理,构建代理池

Python学习交流群:1039649593

基本开发环境

  • Python 3.6
  • Pycharm

相关模块的使用

import requests
import re
from tqdm import tqdm
import os

安装Python并添加到环境变量,pip安装需要的相关模块即可。

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542 

Python学习交流群:1039649593

确定目标需求

既然选择爬取视频了,那肯定优先选择小姐姐的视频呀

懂得都懂~

网页数据分析,找寻数据来源

A站视频是m3u8格式,整个视频分为很多小段,一段对应一个ts文件。

所以只需要找到这个m3u8的数据来源就可以获取所有的ts文件。

url链接的请求参数 pkey 是会改变的。但是这个参数是可以在网页源代码中找到的。包括m3u8的请求链接也是在网页源代码中可以获取的。

整体思路

1、请求视频地址,获取源代码中的m3u8的url地址。

2、请求m3u8的地址,获取所有的ts文件地址

3、保存ts文件并且合并ts文件成mp4视频格式

实现代码

import requests
import re
from tqdm import tqdm
import osdef change_title(title):pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]")  # '/ \ : * ? " < > |'new_title = re.sub(pattern, "_", title)  # 替换为下划线return new_titledef get_response(html_url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}response = requests.get(url=html_url, headers=headers)return responsedef save(name, video, title):path = f'{name}\\'if not os.path.exists(path):os.makedirs(path)with open(path + title + '.ts', mode='wb') as f:f.write(video)def get_m3u8_url(html_url):html_data = get_response(html_url).textm3u8_url = re.findall('backupUrl(.*?)\"]', html_data)[0].replace('"', '').split('\\')[-2]title = re.findall('"title":"(.*?)"', html_data)[0]new_title = change_title(title)m3u8_data = get_response(m3u8_url).textm3u8_data = re.sub('#EXTM3U', "", m3u8_data)m3u8_data = re.sub(r'#EXT-X-VERSION:\d', "", m3u8_data)m3u8_data = re.sub(r'#EXT-X-TARGETDURATION:\d', "", m3u8_data)m3u8_data = re.sub(r'#EXT-X-MEDIA-SEQUENCE:\d', "", m3u8_data)m3u8_data = re.sub(r'#EXT-X-ENDLIST', "", m3u8_data)m3u8_data = re.sub(r'#EXTINF:\d\.\d,', "", m3u8_data)m3u8 = m3u8_data.split()for link in tqdm(m3u8):ts_url = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/' + linkvideo = get_response(ts_url).contentts_title = link.split('?')[0].split('.')[1]save(new_title, video, ts_title)print(f'{title}已经下载完成,请验收....')if __name__ == '__main__':video_id = input('请输入你要下载的视频ID:')url = f'https://www.acfun.cn/v/{video_id}'print('正在下载请稍后.....')get_m3u8_url(url)

最简单的合并方式有手就行

Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频相关推荐

  1. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  2. Python爬虫新手入门教学(十六):爬取好看视频小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  3. Python爬虫新手入门教学(十五):爬取网站音乐素材

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. Python爬虫新手入门教学(十四):爬取有声小说网站数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  5. Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  6. Python爬虫新手入门教学(十七):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  7. Python爬虫新手入门教学(十三):爬取高质量超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  8. Python爬虫新手入门教学(二):爬取小说

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  9. Python爬虫新手入门教学(九):多线程爬虫案例讲解

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

最新文章

  1. 数据库设计中的14个技巧
  2. GO 输出字符数同时输出这个字符串的字节数
  3. ipaddr库计算区间IP及CIDR的IP段
  4. python之lambda
  5. 【JVM】GC Roots 根可达
  6. INT 21H 指令说明及使用方法
  7. 路侧智慧泊车解决方案
  8. [英语学习]3招速成英语发音 背景音乐和学习随感
  9. PHP爬虫微博某个话题的所有内容,GitHub - wansho/sina_weibo_crawl: 爬取新浪微博某一话题的数据,可以替代微博搜索接口...
  10. 华为AC6605二层组网,配置无线漫游
  11. Java 8 时间日期库的20个使用示例
  12. 偶遇with ties
  13. eui怎么在名字后面显示服务器,EUI如何打开经验条 显示经验条其实很简单
  14. 数独解法-变形数独(第一讲:介绍)
  15. 懒人起名神器,百度翻译内容改为驼峰格式
  16. 解决Allocate exception for servlet XXXServlet
  17. 浏览器(网页浏览器)
  18. 【案例】绘制国际象棋棋盘?(turtle 登场)
  19. IOS微信分享,或者app内分享微信图片不显示
  20. 7、Spring AOP使用

热门文章

  1. RNAfold预测RNA的二级结构
  2. 认证服务---OAuth2.0基本介绍,微博登录测试【上篇】
  3. 怎样避免网站存在逻辑漏洞
  4. JAVA 面试题目总结
  5. 深度学习中用到的几种图像操作
  6. 用户数据包协议(user datagram protocol)——UDP
  7. Oracle建立索引的原则
  8. 2019年9月29日
  9. 计算机发展史-计算机基础知识总结(上)
  10. 思科路由交换学习笔记 - CCNP CCIE.安全DMVPN