一、前言

在 B 站看视频已经成为我们日常生活中不可或缺的一部分。很多时候我们在观看视频时,想要获取视频的相关信息,比如视频的标题、发布者、播放量等等。但是由于 B 站页面上的信息有限,很多时候需要通过爬虫来获取更全面的信息。本篇文章就将介绍如何使用 Python 爬取 B 站视频的相关信息。


提示:以下是本篇文章正文内容,下面案例可供参考

二、准备工作

要实现爬取 B 站视频信息的功能,我们需要进行以下准备工作:

1.开发环境

我这里使用的是环境如下仅供参考:
【开发工具】: pycharm
【python环境】:python-3.9

2.安装必要的 Python 库

  • requests:一个用于发送 HTTP 请求的 Python 库,可以方便地获取网页的内容。

  • re:Python内置的正则表达式库,用于匹配、查找、替换字符串等操作。 json:Python 内置的 JSON
    序列化和反序列化库,可以方便地将 JSON 数据解析成 Python 对象或将 Python 对象转换为 JSON 数据。

  • pprint:Python 内置的用于打印输出的库,可以格式化输出 Python 对象以便于查看。

  • subprocess:Python 内置的子进程管理库,可以调用系统命令,比如执行外部程序、获取系统信息等。

  • os:Python 内置的与操作系统交互的库,可以获取当前工作目录、创建目录、删除文件等

# 导入必要的模块
import requests
import re
import json
import pprint
import subprocess  # python 内置模块 不需要 install
import os

三、详细教程

1.引入库

代码如下(示例):

# 导入必要的模块
import requests
import re
import json
import pprint
import subprocess  # python 内置模块 不需要 install

  • 发送请求,对于视频详情页ur1地址发送请求
    确定请求网址
    请求方式
    请求头伪装

爬虫是模拟浏览器对url地址发送请求,然后在获取服务器返回响应数据

2.获取视频URL地址

代码如下(示例):

在这里插入图片描述

URL(Uniform Resource Locator)地址是用于定位互联网上资源的标识符。获取 URL 地址的方法可以根据不同的场景进行不同的操作,以下是几种常见的获取 URL 地址的方法:

  • 在浏览器的地址栏中复制粘贴:打开浏览器,输入目标网站的地址,然后在浏览器的地址栏中复制该网站的地址。

  • 在页面源代码中查找:右键点击页面,选择“查看源代码”,在源代码中查找包含 http 或 https 字符串的内容,复制其中的链接即可。

  • 使用 Python 的 requests 库获取:在 Python 中使用 requests 库向目标网站发送 HTTP 请求,并从响应中获取 URL 地址。例如,使用 requests 库中的 get() 函数来获取一个网页:


3.headers伪装

在爬虫中,headers 是用来设置请求头信息的。通过设置请求头,可以模拟浏览器行为,从而有效地伪装成浏览器发出的请求,避免被服务器识别为爬虫并屏蔽或限制访问。为了保护自己的网站,很多网站都会对爬虫进行验证或限制,例如:

  • 限制单个 IP 地址的访问频率。

  • 验证请求头信息,只允许浏览器发出的请求访问网站。

  • 判断请求参数,检查非法参数并阻止其访问网站。

为了解决以上问题,我们可以通过设置合适的 headers 来解决。例如,我们可以在请求头中添加 User-Agent 字段,模拟不同浏览器的请求头信息,使爬虫请求看起来更像正常的浏览器请求。同时,还可以模拟 cookie、referer、accept 等字段,进一步伪装成浏览器发出的请求。

因此,在爬虫中,通过伪装请求头信息,我们可以提高爬虫的稳定性,减少被封禁或限制的风险。但需要注意,过于频繁、过度使用、或者采用一些不合理的手段去伪装请求头信息,仍可能导致被封禁或禁止访问。

  • headers请求头伪装代码, user-agent 用户代理,浏览器基本身份信息
  • referer 防盗链 告诉服务器,我们请求url地址是从哪里跳转过来的

代码实现:
在这里插入图片描述

`提示:此处的“user-agent”信息省略,根据自己的浏览器信息复制粘贴`

在大多数浏览器中,您可以按下 `F12` 键打开开发者工具(也称为“控制台”或“开发人员工具”),然后选择“网络”选项卡。在这个选项卡中,您可以看到浏览器发送的每一个 HTTP 请求和响应,并且在每个请求中,您都可以找到一些基本信息,如请求的 URL、请求方式、响应状态码、响应头等。

要获取 `user-agent` 信息,您可以在控制台中找到特定请求的响应头信息。在 Chrome 浏览器中,找到响应头部分,点击“查看源代码”按钮,即可看到完整的响应内容,包括 `user-agent` 的值。在 Firefox 浏览器中,同样可以通过打开网络面板,选择一个请求,在“请求标头”中查找 `user-agent` 来获取信息。

如果您使用的是其他浏览器,可以通过类似的方法来获取 `user-agent` 信息。需要注意的是,在不同的浏览器版本中,`user-agent` 信息可能会有所不同,因此在使用时需要注意版本兼容性。

```python
# 通过requests这个模块里面的get方法,对url发送请求,并携带上headers请求头伪装,最后自定义变量response接收返回数据
response=requests.get(url=url, headers=headers)

4.读取数据,进行取值操作

在这里插入图片描述

这段代码主要是将一个字符串类型的json数据解析成Python中的字典类型,并通过pprint.pprint()方法以更好的可读性打印输出。下面我来分别解释其中的几个重要部分。

  • json.loads()
    json.loads()是Python中json库提供的一个方法,其作用是将一个字符串类型的json数据解析为Python中的数据类型,例如:列表、字典等。在这段代码中,我们可以看到play_info是一个字符串类型的json数据,因此需要使用json.loads()方法进行解析处理。

  • pprint.pprint()
    pprint.pprint()是Python中pprint模块提供的一个方法。其作用是以可读性更高的方式来打印输出数据,主要用于调试和打印Python中的数据结构。在这段代码中,我们将json_data以更好的格式打印输出,方便我们查看其中包含的信息,例如:视频的相关信息、视频质量、清晰度等信息。

5.保存数据,对于音频ur1视频ur1发送请求获取响应体二进制数据

在这里插入图片描述

以下是一个示例代码可以实现判别文件是否存在并创建文件的功能:

在这里插入图片描述

这段代码首先定义了要保存的文件名(filename)和文件路径(filepath)。然后,使用os.path.exists()函数判断该目录是否已经存在,如果不存在,则使用os.makedirs()函数创建该目录。

最后,使用with语句打开文件并写入所需内容,使用os.path.join()函数将文件名和目录路径拼接起来,确保完整的文件路径是正确的。最后,输出提示信息以告知用户操作已完成。

6.音视频合成

注意:这里由于爬取的视频和音频是分开的需要通过ffmpeg进行音视频合成,下载教程会放在文章下方:


COMMAND =f'ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4'
subprocess.run(COMMAND, shell=True)
ffmpeg安装教程

在爬虫中,ffmpeg的主要作用是处理音频和视频文件。

具体来说,通过调用ffmpeg库,我们可以将下载下来的音视频文件进行解码、转换、剪辑等操作,以便更好地处理和使用这些媒体资源。例如:

  • 解码:将编码后的音视频文件转换为原始格式,方便后续进行处理。
  • 转换:将音视频文件从一种格式转换为另一种格式,使其能够在不同设备上播放或编辑。
  • 剪辑:对音视频文件进行裁剪、剪切或拼接,生成需要的片段。
  • 提取:从音视频文件中提取出特定的音频或视频流,以便进行进一步处理或合成。
  • 等等。

在爬虫中,我们常常需要从网页或其他来源中爬取或下载音视频文件,因此,使用ffmpeg库可以让我们更好地处理这些数据,以满足我们的需求。

四、完整代码

提示:此处的“user-agent”信息省略,根据自己的浏览器信息复制粘贴
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

`提示:本文章所涉及到的url地址请大家自己获取,文章发表原因不能涉及,或者私信`
# **总结**
爬取B站视频的总结

作为一个喜欢看B站视频的用户,我发现B站上有许多高质量的视频值得我去收藏和观看。但是,如果要下载这些视频,需要花费很多时间和精力去寻找相关方法。在这种情况下,使用爬虫技术来获取B站视频信息,成为了一种更加高效和便捷的方式。

在进行B站视频爬取时,我们需要先了解B站视频的基本信息,例如:视频ID、视频名称、视频描述、视频Url等信息。我们可以通过利用Python语言和相关的第三方库,例如requests、Beautiful Soup等工具,来实现对B站所有视频信息的爬取并进行相应的处理。具体流程如下:

1. 获取视频列表信息

我们可以通过请求URL 来获取B站某个频道下的视频列表。其中,pn代表页码,rid代表频道ID, 20代表每页展示的视频数。我们可以通过遍历每一页的URL,并使用requests库发送请求来获取视频信息。

2. 解析视频信息

我们需要解析每一页返回的HTML或JSON数据,得到每个视频的基本信息,并将这些信息存储下来。其中,视频信息包括视频ID、视频名称、UP主信息、分类标签、播放量、点赞数、投币数、收藏数、评论数、视频时长、发布时间等基本信息。

3. 下载视频

我们可以通过获取到的视频Url,使用requests库发送请求并保存视频文件来实现下载。在此过程中,需要注意服务器反爬虫的限制,采用一些规避反爬虫策略,例如:设置请求头部、增加访问时间间隔,防止反爬虫机制的阻碍。

以上就是爬取B站视频的基本流程。但是,我们需要注意到,尝试爬取B站视频可能会违反B站网站相关的规定。如果没有B站的授权,我们应该尽量避免非法爬取B站内容。因此,我们需要在了解相关规定之后,再进行视频爬取操作,并且不要过度频繁的对B站服务器发出大量请求,以免引起B站的注意和惩罚。

总的来说,爬取B站视频是一个有趣的学习体验。虽然这种方式能够获取到更多的视频资源,但是也需要我们遵守相关规定和道德标准,不滥用爬虫技术来获取他人的劳动成果。在编写爬虫程序前,我们应该深入学习相关知识和技能,并且对此进行谨慎评估。

通过本文的介绍,我们掌握了使用 Python 实现爬取 B 站视频信息的方法。本文所给的只是基础操作,当然也有缺陷,欢迎大家指正。如果您对如何处理 JSON 数据感到困惑,可以阅读相关文档加深理解。**最后建议大家在实际开发中,还应注意不违反 B 站的相关规定和法律法规**。
`俗话说爬虫写的好,牢饭吃到饱! 博主建议大家在实际开发中,还应注意不违反相关规定和法律法规!`
如有侵权,请联系站长删除!
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐