文章目录

  • 1、下载任意哔哩哔哩视频
  • 2、分析页面
  • 3、全部代码

1、下载任意哔哩哔哩视频

寻找任意一个视频地址,例如:

拿出窗口中的链接:https://www.bilibili.com/video/av76609390,修改源代码中的url即可完成下载
ps:由于哔哩哔哩视频音频是分开的,所以下来下来的视频是两个,一个音频,一个视频,要视频和音频合成

2、分析页面

这个地址加载后会有该视频的视频信息和清晰度等信息,我们只需要取出视频和音频的地址,直接下载即可
下面这两个地址就是一个视频,一个音频,分片下载的


我们用requests模块模拟即可,打开文件不停的发送请求加载数据写入即可

def download_video(old_video_url, video_url, audio_url, video_name):headers.update({"Referer": old_video_url})print("开始下载视频:%s" % video_name)video_content = requests.get(video_url, headers=headers)print('%s视频大小:' % video_name, video_content.headers['content-length'])audio_content = requests.get(audio_url, headers=headers)print('%s音频大小:' % video_name, audio_content.headers['content-length'])# 下载视频开始received_video = 0with open('%s_video.mp4' % video_name, 'ab') as output:while int(video_content.headers['content-length']) > received_video:headers['Range'] = 'bytes=' + str(received_video) + '-'response = requests.get(video_url, headers=headers)output.write(response.content)received_video += len(response.content)# 下载视频结束# 下载音频开始audio_content = requests.get(audio_url, headers=headers)received_audio = 0with open('%s_audio.mp4' % video_name, 'ab') as output:while int(audio_content.headers['content-length']) > received_audio:# 视频分片下载headers['Range'] = 'bytes=' + str(received_audio) + '-'response = requests.get(audio_url, headers=headers)output.write(response.content)received_audio += len(response.content)# 下载音频结束return video_name

3、全部代码

'''
通过该程序下载的视频和音频是分成连个文件的,没有合成,
视频为:视频名_video.mp4
音频为:视频名_audio.mp4
修改url的值,换成自己想下载的页面节课
'''# 导入requests模块,模拟发送请求
import requests
# 导入json
import json
# 导入re
import re# 定义请求头
headers = {'Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'
}# 正则表达式,根据条件匹配出值
def my_match(text, pattern):match = re.search(pattern, text)print(match.group(1))print()return json.loads(match.group(1))def download_video(old_video_url, video_url, audio_url, video_name):headers.update({"Referer": old_video_url})print("开始下载视频:%s" % video_name)video_content = requests.get(video_url, headers=headers)print('%s视频大小:' % video_name, video_content.headers['content-length'])audio_content = requests.get(audio_url, headers=headers)print('%s音频大小:' % video_name, audio_content.headers['content-length'])# 下载视频开始received_video = 0with open('%s_video.mp4' % video_name, 'ab') as output:while int(video_content.headers['content-length']) > received_video:headers['Range'] = 'bytes=' + str(received_video) + '-'response = requests.get(video_url, headers=headers)output.write(response.content)received_video += len(response.content)# 下载视频结束# 下载音频开始audio_content = requests.get(audio_url, headers=headers)received_audio = 0with open('%s_audio.mp4' % video_name, 'ab') as output:while int(audio_content.headers['content-length']) > received_audio:# 视频分片下载headers['Range'] = 'bytes=' + str(received_audio) + '-'response = requests.get(audio_url, headers=headers)output.write(response.content)received_audio += len(response.content)# 下载音频结束return video_nameif __name__ == '__main__':# 换成你要爬取的视频地址url = 'https://www.bilibili.com/video/av76609390'# 发送请求,拿回数据res = requests.get(url, headers=headers)# 视频详情jsonplayinfo = my_match(res.text, '__playinfo__=(.*?)</script><script>')# 视频内容jsoninitial_state = my_match(res.text, r'__INITIAL_STATE__=(.*?);\(function\(\)')# 视频分多种格式,直接取分辨率最高的视频 1080pvideo_url = playinfo['data']['dash']['video'][0]['baseUrl']# 取出音频地址audio_url = playinfo['data']['dash']['audio'][0]['baseUrl']video_name = initial_state['videoData']['title']print('视频名字为:video_name')print('视频地址为:', video_url)print('音频地址为:', audio_url)download_video(url, video_url, audio_url, video_name)

Python爬取哔哩哔哩视频相关推荐

  1. Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

    [CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...

  2. Python爬取B站5000条视频,揭秘为何千万人为它流泪

    作者 | Yura编辑 | 胡巍巍来源 | CSDN(ID:CSDNnews) 导语:我们特邀作者Yura爬取B站5000条视频,为你揭秘电影<哪吒>的更多"优秀梗", ...

  3. Python爬取B站5000条视频,揭秘为何千万人看「哪吒」流泪

    导读:<哪吒>看哭了无数人!有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下来. 人们喜欢<哪吒& ...

  4. python爬取琳琅社区整站视频(一晚6000部)

    琳琅社区(传闻中最受男人喜爱的网站),哼哼,我倒要看看是不是真的 该项目用于爬取琳琅社区整站视频(仅供学习) 主要使用:python3.7 + scrapy2.19 + Mysql 8.0 + win ...

  5. python抓取抖音热门视频_要是30行代码!7步教会你Python爬取网页抖音热门视频

    前言 抖音短视频相信大家都听过,也不陌生对吧!可以看到海量的短视频,涵盖了各大行业.个人觉得抖音有毒,刷着刷着根本停不下来,一看时间就是凌晨3.4点.今天带大家爬取抖音网页版的视频数据!一睹为快吧 本 ...

  6. 只要30行代码!7步教会你Python爬取网页抖音热门视频

    前言 抖音短视频相信大家都听过,也不陌生对吧!可以看到海量的短视频,涵盖了各大行业.个人觉得抖音有毒,刷着刷着根本停不下来,一看时间就是凌晨3.4点.今天带大家爬取抖音网页版的视频数据!一睹为快吧 本 ...

  7. Python爬取 抖音 App短视频信息

    1. Charles获取视频接口  爬取之前先将手机与PC至于同局域网并确保手机WIFI的代理端口为8888,然后打开Charles获取视频请求的链接,如图: 2. 手动上滑触发视频请求接口   自动 ...

  8. 小伙用Python爬取3000条B站视频,发现刘华强买瓜是这么火起来的!

    大家好,我是小五???? 最近B站这两个月,快被买瓜的刘华强屠版了,上一个这么火的人物,应该还是闪电五连鞭的马保国. 与之前的网络"审丑"视频不同,这次火的片段来自一部影视作品. ...

  9. 怎么下载m3u8格式视频?Python爬取A站m3u8格式视频案例讲解

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 本篇文章流程 一. 数据来源分析 确定需求 (确定要爬的内容是什么?).只有知道数据要的是什 ...

  10. Python爬取抖音高颜值小视频

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:有趣的Python PS:如有需要Python学习资料的小伙伴可以加点 ...

最新文章

  1. STM32中GPIO的8种工作模式!
  2. Activity应用场景解析
  3. 如何动态调用WebServices
  4. 转: Fedora 17 安装flash插件
  5. 非root用户 gcc安装
  6. r语言c50算法的过程,【机器学习与R语言】5-规则学习算法
  7. oracle监听器无法启动,提示“错误1067:进程意外终止”
  8. ansys_apdl使用教程
  9. Typora的最后一个免费版本MD编辑器
  10. OpenCV与图像算法笔记
  11. 行频、场频与分辨率、刷新率
  12. win2008服务器系统玩红警,win10系统玩红警卡死的两种方法
  13. Critical Reviews | 南农邹建文组综述全球农田土壤抗生素与耐药基因分布
  14. 魅族路由器极速版刷机_魅族路由器极速版——极速之选
  15. Linux 内核引导参数简介
  16. 线性代数之矩阵的秩(2)
  17. linux zip压缩排除目录,Linux系统zip压缩命令详细参数,附文件排除选项的正确用法...
  18. 人力资源管理计算机基础,人力资源管理-专-李佑强-计算机应用基础实践报告
  19. laravel voyager 笔记
  20. 阿里DRDS基本原理

热门文章

  1. echarts实现3D地球模式--3D线和标记mark
  2. FMI飞马网|如何尽早的接触人工智能才不会被抢饭碗,2030年会怎么样?
  3. OA会议 04 (查询会议签字)
  4. oracle中execute函数,oracle中execute immediate的使用(select/insert/update/delete)详解
  5. 【H5钢琴示例代码】
  6. 在寂静的夜中、独自沉沦_悲伤QQ个人签名
  7. 用JScript编写命令行程序
  8. 知识图谱文献综述(第一章 知识表示与建模)
  9. 黑莓BlackBerry 模拟器上浏览网页
  10. 【生活记录】松江区驾驶证到期续办(上海)