Python爬虫,B站视频下载源码脚本工具助手附exe

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

B站,bilibili,以二次元闻名的站点,同时也是学习的天堂,推荐大家学习,尤其是你想要视频学习的话,里面有很多大佬发布了学习视频资源,如果有意,也可以下载下来慢慢看,慢慢学,对于本渣渣来说,收藏从未停止,学习从未开始!

这里推荐一个python基础学习视频教程,来自于莫烦python

https://www.bilibili.com/video/av16926522?p=1

友情提示:本渣渣没看过,因为,我太懒了。。

对于喜欢的视频,本渣渣当然是先down下来啦,尤其是身为白嫖怪,下载==学会!

我已经学废了,那么,你呢?!

前面本渣渣已经分享过 宝藏下载神器,python一键下载B站视频 强烈推荐使用,白嫖到底!!

不过调包侠还是有很多不方便之处,看不懂大佬的代码,不会修改调用!!

乘着有空隙,找了相关资料参考,找到接口重新写了一下b站视频下载爬虫,仅供参考和学习使用哈!

  • 接口一:获取cid值 https://api.bilibili.com/x/player/pagelist?aid=69542806&jsonp=jsonp

    def get_cid(self,avid):
        headers = {"User-Agent": self.ua.random}
        url=f'https://api.bilibili.com/x/player/pagelist?aid={avid}&jsonp=jsonp'
        cid_json = requests.get(url=url,headers=headers).json()
        print(cid_json)
        cid = cid_json['data'][0]['cid']
        print(cid)
        return cid
  • 接口二:获取真实地址 https://api.bilibili.com/x/player/playurl?avid=69542806&cid=120570181&qn=32&type=&otype=json

    def get_vedio_url(https://blog.csdn.net/self,avid,cid):
        url=f'https://api.bilibili.com/x/player/playurl?avid={avid}&cid={cid}&qn=32&type=&otype=json'
        print(url)
        headers = {"User-Agent": self.ua.random}
        vedio_url_json=requests.get(url=url,headers=headers).json()
        print(vedio_url_json)
        vedio_url=vedio_url_json['data']['durl'][0]['url']
        print(vedio_url)
        vedio_size=vedio_url_json['data']['durl'][0]['size']
        vedio_size=vedio_size/1024/1024
        vedio_size ="%.2fM" % vedio_size
        print(vedio_size)
        video_con=vedio_url,vedio_size
        return video_con

B站视频下载存在反爬,请注意协议头,一定要携带referer

    #下载视频
    def get_vedio(self,vedio_url,title):
        headers = {
            "Referer": "https://www.bilibili.com",
            "User-Agent": self.ua.random
        }
        print("开始下载视频..")
        r=requests.get(url=vedio_url,headers=headers)
        with open(f'{title}.flv',"wb") as f:
            f.write(r.content)
        print("下载视频完成!")

附完整源码参考:

# -*- coding: utf-8 -*-
#author:微信:huguo00289
import requests
from fake_useragent import UserAgent
import re


class Bz(object):
    def __init__(self,url):
        self.ua=UserAgent()
        self.url=url


    def get_html(self):
        headers={"User-Agent":self.ua.random}
        html=requests.get(url=self.url,headers=headers).content.decode("utf-8")
        title=re.findall('<title data-vue-meta="true">(.+?)_哔哩哔哩',html)[0]
        title=self.filter(title)
        print(title)
        rurl=re.findall('<meta data-vue-meta="true" itemprop="url" content="(.+?)">',html)[0]
        print(rurl)
        avid = re.findall("video/av(.+?)/", rurl)[0]
        print(avid)
        vedio_parm=title,rurl,avid
        return vedio_parm

    # 替换不合法字符
    def filter(self, old_str):
        pattern = r'[\|\/\<\>\:\*\?\\\"]'
        new_str = re.sub(pattern, "_", old_str)  # 剔除不合法字符
        return new_str

    # 获取cid
    def get_cid(self,avid):
        headers = {"User-Agent": self.ua.random}
        url=f'https://api.bilibili.com/x/player/pagelist?aid={avid}&jsonp=jsonp'
        cid_json = requests.get(url=url,headers=headers).json()
        print(cid_json)
        cid = cid_json['data'][0]['cid']
        print(cid)
        return cid

    #获得视频真实flv地址
    def get_vedio_url(https://blog.csdn.net/self,avid,cid):
        url=f'https://api.bilibili.com/x/player/playurl?avid={avid}&cid={cid}&qn=32&type=&otype=json'
        print(url)
        headers = {"User-Agent": self.ua.random}
        vedio_url_json=requests.get(url=url,headers=headers).json()
        print(vedio_url_json)
        vedio_url=vedio_url_json['data']['durl'][0]['url']
        print(vedio_url)
        vedio_size=vedio_url_json['data']['durl'][0]['size']
        vedio_size=vedio_size/1024/1024
        vedio_size ="%.2fM" % vedio_size
        print(vedio_size)
        video_con=vedio_url,vedio_size
        return video_con

    #下载视频
    def get_vedio(self,vedio_url,title):
        headers = {
            "Referer": "https://www.bilibili.com",
            "User-Agent": self.ua.random
        }
        print("开始下载视频..")
        r=requests.get(url=vedio_url,headers=headers)
        with open(f'{title}.flv',"wb") as f:
            f.write(r.content)
        print("下载视频完成!")


if __name__=="__main__":
    url="https://www.bilibili.com/video/BV1xh411k7by"
    spider=Bz(url)
    vedio_parm=spider.get_html()
    cid=spider.get_cid(vedio_parm[2])
    video_con=spider.get_vedio_url(https://blog.csdn.net/vedio_parm[2],cid)
    spider.get_vedio(video_con[0],vedio_parm[0])

附上参考资料:https://blog.csdn.net/qq_41696843/article/details/102488100

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1203086&highlight=b%D5%BE

再次提醒:功能仅供学习交流使用哈!

附上b站下载视频助手工具

B站视频下载工具,可实现bilibili.com网站视频下载

主程序:bspider

编写语言:python3

下载目录:运行目录

推荐系统:win7 64位

本工具助手为本渣渣自行编写,保证无毒无后门,无恶意文件代码

请认证【 微信公众号:二爷记 】出品 下载

工具助手仅为学习测试使用,不保证随时有效,推荐win7 64位系统使用,其他系统可能存在不兼容情况

BUG反馈:

微信:huguo00289

更多好玩,有趣的工具软件请关注本渣渣微信公众号:二爷记

助手工具exe获取方式

关注本渣渣微信公众号

后台回复"B站视频"

即可获取

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

关注我的都变秃了

说错了,都变强了!

不信你试试

扫码关注最新动态

公众号ID:eryeji

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值