听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

这篇具有很好参考价值的文章主要介绍了听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

事情是这样的,昨晚室友悄咪咪的拉着我去他的电脑,说带我欣赏一点高雅的作品,于是这一坐下,便是一晚上…

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

作为一个乐于分享的博主,本来我是决定直接分享的,但是转念一想,授人以鱼不如授人以渔,我还是直接出教程方便大家以后遇到了喜欢的,也能及时下载保存。

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

一、准备一下

开发环境

Pycharm
python 3.8
ffmpeg

模块的使用

requests
re
subprocess

二、基本思路流程

1、明确需求

采集下破站视频数据
通过开发者工具进行抓包分析,分析破站视频数据的来源。

开发者工具的使用

打开方式:

  1. 鼠标右键点击检查选择Network
  2. F12
  3. ctrl + shift + i

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

想要开发者工具中有数据加载, 需要 刷新网页。

通过元素(Element)面板,我们能查看到想抓取页面渲染内容所在的标签、使用什么 CSS 属性(例如:class=“middle”)等内容。例如我想要抓取我知乎主页中的动态标题,在网页页面所在处上右击鼠标,选择“检查”,可进入 Chrome 开发者工具的元素面板。

网络(Network)面板记录页面上每个网络操作的相关信息,包括详细的耗时数据、HTTP 请求与响应标头和 Cookie,等等。这就是我们通常说的抓包。

Requests Table参数:

all:所有请求数据(图片、视频、音频、js代码、css代码)

XHR:XMLHttpRequest 的缩写,是ajax技术的核心,动态加载完成经常分析的一个内容

CSS: css样式文件

JS:JavaScript文件,js解密是常分析的一个页面

Img: Images 图片文件

Font: 字体文件(字体反扒)

DOC : Document,文档内容

WS: WebSocket,web端的socket数据通信,一般用于一些实时更新的数据

Requests详情:

请求头

Headers 是显示 HTTP 请求的 Headers,我们通过这个能看到请求的方式,以及携带的请求参数等。

  • General

    Request url :实际请求的网址

    Request Method: 请求方法

    Status Code: 状态码,成功时为 200

  • Response Headers

    服务器返回时设置的一些数据,例如服务器更新的cookie数据最新是在这里出现修改。

  • Requests Headers

    请求体,请求不到数据的原因一般出在这里,反扒也是反扒请求体里面的数据。

    Accept:服务器接收的数据格式(一般忽略)

    Accept-Encoding: 服务器接收的编码(一般忽略)

    Accept-Language: 服务器接收的语言(一般忽略)

    Connection: 保持连接(一般忽略)

    Cookies: cookies信息,是身份信息,爬取VIP资源是需要携带身份信息。

    Host: 请求的主机地址

    User-Agent: 用户身份代理,服务器根据这个判断用户的大概信息。

    Sec-xxx-xxx: 其他信息,可能没用,可能是反扒,具体情况具体分析。

预览

Preview 是请求结果的预览。一般用来查看请求到的图片,对于抓取图片网站比较给力。

响应体

Response 是请求返回的结果。一般的内容是整个网站的源代码。如果该请求是异步请求,返回的结果内容一般是 Json 文本数据。

此数据与浏览器展示的网页可能不一致,因为浏览器是动态加载的。

2、数据来源分析

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

所以可以根据里面的参数在开发者工具里面进行搜索

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来
通过结果可得 playurl 就是我们想要的数据

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来
既然我们知道了, 数据的来源, 接下来就要分析, 这个数据包url中有那些参数是我们需要去找寻分析的…

因为我们这个只是找到一个B站视频的数据, 如果想要获取多个那肯定是需要分析的。

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来
听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来
通过请求参数对比, 我们现在所需要找的参数就是 cid , bvid , session

同样可以直接在开发者工具里面搜索 这些参数来源 bvid 就是B站视频对应的ID

**cid / session 在网页源代码里面就可以获取的 **

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

3、总结

通过以上分析可得:

  1. 首先获取 cid session 这两个参数, 顺带在获取视频标题
  2. 把cid session 以及 bv号 传入数据包内
  3. 最后再获取 音频数据 以及 视频画面数据

三、代码实现步骤

可以发现, 关于python爬虫的流程思路分析, 所涉及的知识点还是比较多的。

  1. 发送请求, 对于视频详情页url地址发送请求
  2. 获取数据, 获取响应体的文本数据 response.text
  3. 解析数据, 通过正则表达式提取数据内容: 视频标题 cid session
  4. 发送请求, 对于视频内容数据包url发送请求
  5. 获取数据, 获取响应体的json字典数据 response.json()
  6. 解析数据, 通过字典键值对取值, 提取音频url 视频url
  7. 保存数据, 对于音频url 视频url发送请求 获取响应体二进制数据 response.content
  8. 合成数据, 把音频内容以及视频画面内容合成为一个完整的mp4文件

四、代码实现

1、发送请求

import requests
import re
import subprocess

headers = {
    'referer': 'https://www.****.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
}


def get_response(html_url):
    """发送请求"""
    response = requests.get(url=html_url, headers=headers)
    return response

2、获取视频标题/cid/session

def get_video_info(html_url):
    """获取 cid session 视频标题"""
    response = get_response(html_url)
    cid = re.findall('"cid":(\d+),', response.text)[0]
    session = re.findall('"session":"(.*?)"', response.text)[0]
    title = re.findall('<h1 title="(.*?)" class="video-title">', response.text)[0].replace(' ', '')
    video_info = [cid, session, title]
    return video_info

3、获取音频url/视频url

def get_video_content(cid, session, bvid):
    """获取音频内容以及视频内容"""
    index_url = 'https://api.****.com/x/player/playurl'
    data = {
        'cid': cid,
        'qn': '80',
        'type': '',
        'otype': 'json',
        'fourk': '1',
        'bvid': bvid,
        'fnver': '0',
        'fnval': '976',
        'session': session,
    }
    json_data = requests.get(url=index_url, params=data, headers=headers).json()
    audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
    video_url = json_data['data']['dash']['video'][0]['baseUrl']
    video_content = [audio_url, video_url]
    return video_content

4、保存数据

def save(name, audio_url, video_url):
    """保存数据"""
    audio_content = get_response(audio_url).content
    video_content = get_response(video_url).content
    with open(name + '.mp3', mode='wb') as a:
        a.write(audio_content)
    with open(name + '.mp4', mode='wb') as v:
        v.write(video_content)
    print(name, '保存成功')

5、合成视频

def merge_data(video_name):
    """数据的合并"""
    print('视频合成开始:', video_name)
    cmd = f"ffmpeg -i {video_name}.mp4 -i {video_name}.mp3 -c:v copy -c:a aac -strict experimental {video_name}output.mp4"
    # print(cmd)
    subprocess.run(cmd, shell=True)
    print('视频合成结束:', video_name)

好了,今天的分享就到这结束了,咱们下次见!文章来源地址https://www.toymoban.com/news/detail-458310.html

到了这里,关于听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 推荐几个免费且高质量无版权的视频素材网站,记得收藏

    今天这篇文章给大家分享视频素材网站,希望对大家有帮助 1、Coverr 第一个网站是Coverr。Coverr是一个高质量的无版权视频素材下载网站,有分类,可以英文搜索。这个网站的视频素材质量还是很高的,无套路,免费下载。 第二个网站是Mixkit。这个网站就更牛批了,不仅可以下

    2024年02月12日
    浏览(94)
  • 用Wav2Lip+GFPGAN创建高质量的唇型合成视频

    在这里,我可以提供一个简单的代码示例,演示如何使用Wav2Lip+GFPGAN来创建高质量的唇形合成视频。代码示例如下: 这是一个简单的参考实现,并不能保证所有情况下都适用,但是可以帮助您了解如何使用Wav2Lip+GFPGAN来生成唇形合成视频。

    2024年02月13日
    浏览(47)
  • 通过Whisper模型将YouTube播放列表中的视频转换成高质量文字稿的项目

    一个通过Whisper模型将YouTube播放列表中的视频转换成高质量文字稿的项目。 这个基于 Python 的工具旨在将 YouTube 视频和播放列表转录为文本。它集成了多种技术,例如用于转录的 Fast-Whisper、用于自然语言处理的 SpaCy 以及用于 GPU 加速的 CUDA,旨在高效处理视频内容。该脚本能

    2024年02月05日
    浏览(47)
  • 高质量椭圆检测库

    目录 前言 效果展示 检测库 简介 安装库 用法 测试 论文算法步骤简读 1. lsd 检测 2. lsd group 3. 生成初始 ellipse 4. 聚类 椭圆检测是工业中比较常用的一种检测需求。目前常用的基于传统图像处理的椭圆检测方法是霍夫变换,但是霍变换的检测率比较低,很难满足工业场景。而基

    2024年02月07日
    浏览(151)
  • 如何写出高质量代码?

    作为一名资深开发人员,写出高质量的代码是我们必须要追求的目标。然而,在实际开发中,我们常常会遇到各种问题。比如,代码的可读性、可维护性、健壮性和灵活性等,这些都会影响代码的质量。那么,究竟如何才能写出高质量的代码呢? 代码结构清晰易懂,能够使代

    2024年02月02日
    浏览(58)
  • 如何编写高质量代码

    现代软件开发中,代码是构建高质量软件的核心。高质量代码能够提高软件系统的可靠性、可维护性和可扩展性,减少bug的数量和修复时间,提升开发效率和代码可读性,同时有助于团队协作和知识传承共享。 然而,梦想是丰满的,现实是骨感的!软件开发面临诸多挑战。

    2024年02月02日
    浏览(128)
  • 如何写出高质量代码

    一、 前言 编写高质量代码是每一位程序员的追求。高质量的代码可以提高代码可读性、可维护性、可扩展性以及软件运行的性能和稳定性。在这篇文章中,我将分享一些编写高质量代码的特征、编程实践技巧和软件工程方法论。 可读性:好的代码应该能够被维护者轻易地理

    2024年02月02日
    浏览(88)
  • 如何写出高质量的代码

    你是否曾经为自己写的代码而感到懊恼?你是否想过如何才能写出高质量代码?那就不要错过这个话题!在这里,我们可以讨论什么是高质量代码,如何写出高质量代码等问题。无论你是初学者还是资深开发人员,都可以在这个话题下进行分享,汲取灵感和知识,共同提高自

    2023年04月25日
    浏览(129)
  • 网络安全高质量文库

    PeiQI文库 http://api.orchidstudio.cn/ PeiQi文库是一个面对网络安全从业者的知识库,涉及漏洞研究,代码审计,CTF夺旗,红蓝对抗等多个安全方向,用于解决安全信息不聚合,安全资料不易找的难题。帮助网络安全从业者共同构建安全的互联网,快速验证并及时修复相关漏洞,为甲

    2024年02月12日
    浏览(54)
  • 如何编写高质量的测试计划

    1.1目的 简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。 测试计划在策略和方法的高度说明如何计划、组织和管理测试项目。测试计划包含足够的信息使测试人员明白项目需要做什么是如何运作的。另外,清晰的文档结构能使任何一个读

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包