首页 > 其他分享 >网络爬虫(三)爬取B站视频

网络爬虫(三)爬取B站视频

时间:2023-01-29 12:00:19浏览次数:49  
标签:视频 url 爬虫 爬取 json video print data

尝试着用request库去爬取了一些B站视频

参考和抄了一些博主的代码和思路,我略作了修改,目前是不能爬取带分页的视频(只需要略作修改,也可爬取):

b站视频爬虫_哔哩哔哩_bilibili

Python爬取B站视频,只需一个B站视频地址,即可任意下载 - 腾讯云开发者社区-腾讯云 (tencent.com)

import requests
import re  # 正则表达式
import pprint
import json
import subprocess
import os


if not os.path.exists("./video"):
    os.mkdir("./video")
ID=r"BV1Vx4y177ew"
fileName="./video/test"
url = f'https://www.bilibili.com/video/{ID}/'
headers = {
            'referer': f'https://www.bilibili.com/video/{ID}?spm_id_from=333.337.search-card.all.click',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
    }


def send_request(url):
    response = requests.get(url=url, headers=headers)
    return response
def get_video_data(html_data):
    """解析视频数据"""

    # 提取视频的标题
    #title = re.findall('<span class="tit">(.*?)</span>', html_data)
    # print(title)

    # 提取视频对应的json数据
    json_data = re.findall('<script>window\.__playinfo__=(.*?)</script>', html_data)[0]
    # print(json_data)  # json_data 字符串
    json_data = json.loads(json_data)
    pprint.pprint(json_data)

    # 提取音频的url地址
    audio_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]
    print('解析到的音频地址:', audio_url)

    # 提取视频画面的url地址
    video_url = json_data['data']['dash']['video'][0]['backupUrl'][0]
    print('解析到的视频地址:', video_url)

    video_data = [audio_url, video_url]
    return video_data
def save_data(file_name, audio_url, video_url):
    # 请求数据
    print('正在请求音频数据')
    audio_data = send_request(audio_url).content
    print('正在请求视频数据')
    video_data = send_request(video_url).content
    with open(file_name + '.mp3', mode='wb') as f:
        f.write(audio_data)
        print('正在保存音频数据')
    with open(file_name + '.mp4', mode='wb') as f:
        f.write(video_data)
        print('正在保存视频数据')

def merge_data(video_name):
    print('视频合成开始:', video_name)
    # ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
    COMMAND = f'ffmpeg -i {video_name}.mp4 -i {video_name}.mp3 -vcodec copy -acodec copy {video_name}_out.mp4'
    subprocess.run(COMMAND, encoding='utf-8',shell=True)
    print('视频合成结束:', video_name)

rep=send_request(url).text
video=get_video_data(rep)
save_data(fileName,*video)
merge_data(fileName)
print("success")

如果看不懂这些代码,建议看一看https://www.bilibili.com/video/BV1ha4y1H7sx/?spm_id_from=333.337.search-card.all.click

可能的错误有 控制台会有  ffmpeg一堆乱码,1.没有安装ffmpeg库,环境变量没配置好。2.配置好以后,需要重启一下,pycharm才会识别到该库。

标签:视频,url,爬虫,爬取,json,video,print,data
From: https://www.cnblogs.com/xmds/p/17072317.html

相关文章

  • 【Python视频下载】Python字符串连接的5种方法
    导读在使用Python的时候,经常会进行字符串操作,本文总结了一下Python字符串连接的5种方法,希望对大家有所帮助。1.加号第一种,有编程经验的人,估计都知道很多语言里面是用加号连......
  • Qt音视频开发12-easyplayer内核
    一、前言在视频监控行业经常看到两个厂家广告打得比较厉害,一个是青犀视频对应easyplayer,一个是大牛直播,两个最初都是sdk免费,并提供调用示例源码,后面大牛直播的sdk以及示例......
  • 爬虫入门第1课:代理池概述及开发环境
    1.什么是代理池代理池就是有代理IP组成的池子,它可以提供多个稳定可用的代理IP2.为什么要实现代理池我们在做爬虫的时候,最常见一种反爬手段就是ip反爬;也就是当同一......
  • Hugging News #0113:DreamBooth 编程马拉松活动保姆级视频教程来了!
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为......
  • ISM Web组态软件通过系统脚本对RTSP视频录像
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录​​前言​​​​一、怎么录像​​​​二、使用步骤​​​​1.添加网络摄像头​​​​2.录像​​​​......
  • js逆向——酷狗音乐&酷狗音乐爬虫
    寒假期间当然要开卷了。今天我们要爬取酷狗音乐的歌曲,个人觉得酷狗还是比较容易的。虽然付费音乐的apl我没找到,但有个会员就能听,能听就能下载,就不用单曲购买了,会员到期了也......
  • 腾讯智影使用攻略:视频解说功能
    大家好我是智影小助手小智,小智最大的愿望就是为使用智影的用户创作出更多精彩的内容,小智特别创作的《智影使用攻略》专题助力大家快速掌握智影创作的操作方法,创作出专属于......
  • 在Winform中播放RTSP视频流
    在WPF中可以使用LibVLCSharp.WinForms、Emgu.CV组件直接播放RTSP流。1、LibVLCSharp.WinForms(1) 引入NuGet包LibVLCSharp.WinForms。(2)准备工作publicVlcVideoC......
  • 视频直播源码,uniapp checkbox 怎么判断是否选中
    视频直播源码,uniappcheckbox怎么判断是否选中<checkbox-group@change="selfChangde"name=""><label><checkbox:checked="selfChecked"color="#DC143C"style="trans......
  • 在WPF中播放RTSP视频流
    在WPF中可以使用LibVLCSharp.WPF、Vlc.DotNet.Wpf组件直接播放RTSP流,此外还可以通过LibVLCSharp+SkiaSharp的方式将VLC视频流通过WriteableBitmap的方式关联到Image对象......