IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python爬b站视频 人生苦短 我用python -> 正文阅读

[Python知识库]python爬b站视频 人生苦短 我用python

起因

不知道兄弟们有没有遇到过b站视频经常下架的问题,就比如我现在想在b站找一个老师的课程,运气好可以找到,但经常看了一段时间之后可能就会下架,然后继续找,过不了多久又会下架,这样的循环搞得我好烦呀,这时候我突然想起来万能的python,python爬b站视频咋样?说干就干
在这里插入图片描述

前期准备

python环境必不可少,同时需要ffmpeg,一台可以上网的电脑

分析

首先随便打开一个视频,然后右键查看网页源代码
在这里插入图片描述
由于展示的源代码格式有点乱,所以我选择复制到vscode中查看
在这里插入图片描述
这时候看着就舒服多了,细心的朋友可能已经发现baseUrl,然后我们复制一下这个baseUrl,在浏览器中打开康康,果然不出所料
在这里插入图片描述
还是老实巴交的用python访问吧,header头设置好之后就可以直接访问了,至于header头怎么设置,相信兄弟们都懂,一切就绪之后可以拿到这个文件,值得注意的是b站的视频文件和音频文件是分开存储的,因此我们还需要下载音频文件,音频文件url的位置和视频文件url的位置靠很近,就在audio这里存放着
在这里插入图片描述

这样音频文件和视频文件的地址我么都拿到了,随后就可以开始下载了,下载之后使用ffmpeg将两个文件操作一下就可以了。这里有ffmpeg的安装教程,大家可以看一下,ffmpeg安装教程,欢迎三连

代码

音频和视频整合的工具类

import os


# 声音视频结合
def videoMixAudio(videourl, audiourl, mp4url):
    com = f'D:\\tool\\ffmpeg\\bin\\ffmpeg.exe -i "{audiourl}" -i "{videourl}" ' \
          f'-acodec copy -vcodec copy "{mp4url}"'

    os.system(com)
    os.remove(videourl)
    os.remove(audiourl)

这里解释一下。videourl是视频文件的全路径,audiourl是音频文件的全路径,mp4url则是生成的有声音的视频的位置,然后通过调用ffmpeg来对音频和视频文件进行合成,没有使用ffmpeg的同学们可以采用格式工厂的方式对这两个文件操作进行操作也是可以的。

分析页面

使用到了这三个匹配规则

# 拿到<script>中的内容
valink = re.compile(r'<script>(.*?)</script>')
# 拿到window.__playinfo__后面的内容
infoink = re.compile(r'window.__playinfo__=(.*)')
# 这个是为了拿到视频的名字 可以选择不用
nameink = re.compile(r'window.__INITIAL_STATE__=(.*);\(function')

valink用于取出下图这个部分的内容
在这里插入图片描述
infoink是为了把window._playinfo_去掉,这样拿到的就是可以转换为json的字符串
这样就可以拿到视频和音频的url了
代码如下

def downloadVideo(url):
    # 获取网页源代码
    html = requests.get(url).text
    # 拿到script的内容
    info = re.findall(valink, html)
    # 第一个就是playinfo的那个script
    info2 = str(info[0])
    # 这一个是存放视频信息的scripte
    info3 = str(info[1])
    nameAnd=re.findall(nameink,info3)
    # 把window._playinfo_去掉,拿到一个可以转换为json的字符串
    videoAndAudio = re.findall(infoink, info2)
    # str转json
    jsonobject = json.loads(videoAndAudio[0])
    nameobject = json.loads(nameAnd[0])
    name=nameobject["videoData"]["title"]
    # 获取视频和音频的链接
    videoFile = jsonobject["data"]["dash"]["video"][0]["baseUrl"]
    audioFile = jsonobject["data"]["dash"]["audio"][0]["baseUrl"]

拿到链接之后就可以开始下载了,记住下载的时候要设置好header

成果

在这里插入图片描述

总结

全部代码就不贴了,兄弟们按照这个流程就可以实现,过程还是比较简单的,自己用用就好。
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-09 17:31:20  更:2021-07-09 17:31:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 13:02:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码