Python爬虫(B站视频)(非大会员,不影响版权)的后端技术

这篇具有很好参考价值的文章主要介绍了Python爬虫(B站视频)(非大会员,不影响版权)的后端技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本篇博客中,我将介绍如何使用Python编写爬虫代码来爬取Bilibili(B站)的视频并下载保存到本地。通过使用Python的requests库和BeautifulSoup库,我们可以轻松地获取视频的标题、视频链接和音频链接,并将它们下载到本地。

首先,我们需要导入所需的库和模块:

import os
import requests
import json
import re
from bs4 import BeautifulSoup

接下来,我们创建一个名为BilibiliVideoAudio的类来处理视频和音频的获取和下载:

class BilibiliVideoAudio:
    def __init__(self, bid):
        self.bid = bid
        self.headers = {
            "referer": "https://www.bilibili.com",
            "origin": "https://www.bilibili.com",
            'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
            'Accept-Encoding': 'identity'
        }

    def get_video_audio(self):
        # 构造视频链接并发送请求获取页面内容
        url = f'https://www.bilibili.com/video/{self.bid}?spm_id_from=333.851.b_7265636f6d6d656e64.6'
        content = requests.get(url, headers=self.headers).content.decode('utf-8')
        soup = BeautifulSoup(content, 'html.parser')

        # 获取视频标题
        meta_tag = soup.head.find('meta', attrs={'name': 'title'})
        title = meta_tag['content']

        # 获取视频和音频链接
        pattern = r'window\.__playinfo__=({.*?})\s*</script>'
        json_data = re.findall(pattern, content)[0]
        data = json.loads(json_data)

        video_url = data['data']['dash']['video'][0]['base_url']
        audio_url = data['data']['dash']['audio'][0]['base_url']

        return {
            'title': title,
            'video_url': video_url,
            'audio_url': audio_url
        }

    def download_video_audio(self, url, filename):
        # 对文件名进行清理,去除不合规字符
        filename = self.sanitize_filename(filename)
        try:
            # 发送请求下载视频或音频文件
            resp = requests.get(url, headers=self.headers).content
            download_path = os.path.join('download', filename)  # 构造下载路径 这里我是在当前文件位置下创建了一个download 文件夹
            with open(download_path, mode='wb') as file:
                file.write(resp)
            print("{:*^30}".format(f"下载完成:{filename}"))
        except Exception as e:
            print(e)

    def sanitize_filename(self, filename):
        # 定义不合规字符的正则表达式
        invalid_chars_regex = r'[\"*<>?\\|/:,]'

        # 替换不合规字符为空格
        sanitized_filename = re.sub(invalid_chars_regex, ' ', filename)

        return sanitized_filename

在main函数中,我们使用BilibiliVideoAudio类来获取视频和音频信息,并下载到本地:

def main():
    bids = ["BV1bL4y1E71a"]  # 视频的bid,可以修改为其他视频的bid
    for bid in bids:
        bilibili = BilibiliVideoAudio(bid)
        video_audio_info = bilibili.get_video_audio()

        title = video_audio_info['title']
        video_url = video_audio_info['video_url']
        audio_url = video_audio_info['audio_url']

        bilibili.download_video_audio(video_url, f"{title}.mp4")  # 下载视频
        bilibili.download_video_audio(audio_url, f"{title}.mp3")  # 下载音频

main()

以上就是使用Python编写的爬取B站视频并下载的后端技术代码。通过运行该代码,你可以指定视频的bid,获取视频的标题、视频链接和音频链接,并将它们下载到本地。注意,你需要安装所需的Python库,如requests、BeautifulSoup等。

希望这篇博客对你理解如何使用Python爬取B站视频的后端技术有所帮助。如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读!文章来源地址https://www.toymoban.com/news/detail-770453.html

到了这里,关于Python爬虫(B站视频)(非大会员,不影响版权)的后端技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 新的后端渲染:服务器驱动UI

    通过API发送UI是一种彻底的新方法,将改变传统的UI开发。 一项正在改变我们对用户界面 (UI) 的看法的技术是通过 API 发送 UI,也称为 服务器驱动UI 。这种方法提供了新水平的活力和灵活性,正在改变 UI 开发的传统范例。 服务器驱动 UI 不仅仅是一个理论概念;它也是一个概

    2024年02月11日
    浏览(42)
  • 汇编代码生成和编译器的后端

    基于SLR(1)分析的语义分析及中间代码生成程序-CSDN博客 https://blog.csdn.net/lijj0304/article/details/135097554?spm=1001.2014.3001.5501 在前面编译器前端实现的基础上,将所生成的中间代码翻译成某种目标机的汇编代码,实现编译器后端实现的任务。然后进一步实现程序的输入是源程序,输出

    2024年01月21日
    浏览(44)
  • 博客系统的后端设计(八) - 实现发布博客功能

    在原来的编辑页面点击发布文章按钮,是不会有什么效果的。 这是因为此时还不能实现前后端的交互。 请求使用 POST ,路径是 /blog title=这是标题content=这是正文 请求中要有 body,按照 form 表单的方式添加进去。 响应使用 HTTP/1.1 302 跳转到列表页:Location: blog.list.html 在一篇博

    2024年02月07日
    浏览(43)
  • Python实现透明隧道爬虫ip:不影响现有网络结构

    作为一名专业爬虫程序员,我们常常需要使用隧道代理来保护个人隐私和访问互联网资源。本文将分享如何使用Python实现透明隧道代理,以便在保护隐私的同时不影响现有网络结构。通过实际操作示例和专业的解析,我们将带您深入了解透明隧道代理的工作原理,并提供实用

    2024年02月12日
    浏览(41)
  • 基于模块自定义扩展字段的后端逻辑实现(一)

    目录 一:背景介绍 二:实现过程 三:字段标准化 四:数据存储 五:数据扩展 六:表的设计 一:背景介绍   最近要做一个系统,里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表单,主要包括新建/编辑模块,模块详情等。这里涉及的重点是新建模块的表单是手

    2024年02月02日
    浏览(32)
  • Node.js与TypeScript:优雅的后端开发方式

    随着前端 JavaScript语言的不断发展, Node.js 开发环境也越来越受到开发者们的欢迎。 Node.js 让我们可以轻松地使用 JavaScript 来编写服务器端应用,从而实现前后端一致的开发体验。在 Node.js 的发展历程中, TypeScript 也逐渐成为了一种备受欢迎的编程语言,它的出现大大提高了

    2024年02月10日
    浏览(65)
  • Django form组件 - 神奇的后端直接渲染HTML

    之前在HTML页面中利用form表单向后端提交数据时会写一些获取用户输入的标签并且使用form标签将其包裹起来。并且很多场景下都需要对用户的输入做校验,比如用户输入的长度和格式等,如果用户输入的有误就需要在页面上相应的位置显示相应的错误信息。而django form组件实

    2024年02月02日
    浏览(40)
  • 「AI 孙燕姿」翻唱华语乐坛歌曲爆红全网,AI 翻唱将带来哪些影响?是否会有版权等问题?

    在某视频平台上,“AI孙燕姿”成了新网红,它翻唱过周杰伦的《发如雪》、翻唱过郭顶的《水星记》、翻唱过赵雷的《我记得》,受到了网友的追捧,甚至有网友宣布“这是2023年最火的声音”。 网上除了AI孙燕姿,还有AI周杰伦、AI王心凌、AI披头士、AI德雷克,网友们乐此

    2024年02月03日
    浏览(72)
  • 做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长

    ☆ 前段时间由于一时的头脑发热,写了一篇《做了8年前端,细说那些曾经让你浴霸不能的后端》的博客,虽然每个细节也都属实吧,但始终是一些负能量的东西,建议大家不要去看了,今年互联网情况已经这样了,就不要再去怀念那些不美好了 ☆ 干了这么多年前端,怎么可

    2024年02月21日
    浏览(34)
  • 一套完全开源,支持多租户,界面配置单点的后端框架JVS

    在IT系统中,“租户”(tenant)通常用于指代一种多租户架构(multi-tenancy),它是一种软件架构模式,允许多个用户或组织共享相同的应用程序或系统实例,但彼此之间的数据和配置被隔离开来,保证每个租户的数据隐私和安全性。 在一个多租户系统中,一个实例的应用程序

    2024年02月16日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包