使用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.bilibili.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):
    """发送请求"""
# 完整源码+视频讲解 都放在这个扣裙了 708525271
    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.bilibili.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-457401.html

到了这里,关于使用Python采集某网站视频,实现音视频自动合成!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python moviepy 自动化音视频处理实践

    MoviePy是一个用于视频编辑的Python库。它提供了一种简单且直观的方式来处理视频文件,包括剪辑、合并、裁剪、添加文本、添加音频等操作。使用MoviePy,你可以通过编写Python代码来创建和编辑视频,而无需使用复杂的视频编辑软件。 MoviePy建立在另一个库Pygame和软件MoviePy

    2024年02月14日
    浏览(25)
  • 浏览器自动播放音视频-前端实现方案

    目录 前言 浏览器自动播放策略 策略详情: 实现方案  方案1: 互动后播放 方案2: 互动后出声 总结 在开发中可能有遇到这样的需求,当用户打开页面后,需要自动播放视频或音频,按理说那就打开页面时play()一下不就搞定了吗,但实际情况很明显不是,不然也没得这篇文

    2024年02月04日
    浏览(44)
  • 抖音视频批量提取采集软件|视频无水印下载工具

    高效批量提取抖音视频,轻松应对营销需求! 在抖音视频营销中,如何高效地获取大量视频资源是许多市场人员面临的挑战。针对这一需求,我们开发了一款功能强大的抖音视频批量提取采集软件,帮助您快速、方便地获取所需视频,满足您的营销需求。 简介: 我们的软件

    2024年04月14日
    浏览(41)
  • 音视频开发:音频编码原理+采集+编码实战

    消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上; 去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽; 频域遮蔽效应 屏蔽70分贝以下,20HZ以下,20000HZ以上 屏蔽分贝小,频率小的声音 两个频率相近发出的声音,

    2024年02月05日
    浏览(39)
  • 网站在线客服系统实时语音视频聊天实战开发,利用peerjs vue.js实现webRTC网页音视频客服系统...

    webRTC机制和peerjs库的介绍在其他博客中已经有了很多介绍,这里我直接搬运过来 WebRTC(Web Real-Time Communication)即:网页即时通信。 简单点讲,它可以实现浏览器网页与网页之间的音视频实时通信(或传输其它任何数据),目前主流浏览器都支持该API,WebRTC现在已经纳入W3C标准。

    2024年02月04日
    浏览(39)
  • 抖音视频无水印采集拓客软件|视频批量下载提取工具

    抖音视频无水印批量采集拓客软件助力高效营销!         随着抖音平台的崛起,视频已成为各行各业进行营销的重要工具。但是,传统的视频下载方式往往效率低下,无法满足快速获取大量视频的需求。针对这一问题,我们开发了一款视频无水印批量采集拓客软件。 工具

    2024年04月14日
    浏览(56)
  • 抖音视频评论采集软件|抖音数据抓取工具

            抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具,旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过进行搜索抓取,还能够通过分享链接进行单个视频的抓取和下载,让用户轻松获取抖音视频评论数据。         其中,批量视频提

    2024年04月11日
    浏览(37)
  • Qt音视频开发40-ffmpeg采集桌面并录制

    之前用ffmpeg打通了各种视频文件和视频流以及本地摄像头设备的采集,近期有个客户需求要求将整个桌面屏幕采集下来,并可以录制保存成MP4文件,以前也遇到过类似的需求,由于没有搞过,也没有精力去摸索和测试,所以也就一直耽搁着,近期刚好这个需求又来了,定下心

    2023年04月25日
    浏览(43)
  • WebRTC音视频采集和播放示例及MediaStream媒体流解析

    示例代码——同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStream媒体流 代码 效果 1. mediaDevices mediaDevices 是 Navigator 只读属性,返回一个 MediaDevices 对象,该对象可提供对相机和麦克风等媒体输入设备的连接访问,也包括屏幕共享。 语法

    2023年04月08日
    浏览(28)
  • 『GitHub项目圈选01』一款构建AI数字人项目开源了!自动实现音视频同步!

    从本周开始,小圈正式推出『GitHub项目圈选周刊』计划,精选一些小圈遇到的或行业内大佬们推荐的好玩、有趣、实用、超前的开源项目,以周刊文章形式分享给大家观阅学习,以望一起学习,共同进步。 🔥🔥🔥 本周GitHub项目圈选****: 主要包含音视频同步、多代理框架、

    2024年02月04日
    浏览(135)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包