网页视频抓取脚本(一个python基础学习视频教程(B站视频下载工具)源码下载)

优采云 发布时间: 2021-11-14 01:12

  网页视频抓取脚本(一个python基础学习视频教程(B站视频下载工具)源码下载)

  B站,bilibili,是著名的二维元素站点。也是学习的天堂。推荐大家学习,尤其是想通过视频学习的。有很多大佬发布了学习视频资源。有兴趣的可以慢慢下载。慢慢看,慢慢学习。对于这个人渣,采集永不停歇,学习永无止境!

  

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

  

  友情提示:这个人渣我没看过,因为我太懒了。.

  喜欢的视频,先下这个渣渣,尤其是妓女,下载==学习!

  我失去了学业,你呢?!

  渣在上一节已经分享过了,强烈推荐大家使用。!

  但是屯堡下还是有很多不便的地方。看不懂老大的代码,不会修改调用!!

  趁着空档找了相关资料参考,找到了接口,重新编写了b站的视频下载爬虫,仅供参考和学习!

  

  

      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

      def get_vedio_url(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('(.+?)_哔哩哔哩',html)[0]

        title=self.filter(title)

        print(title)

        rurl=re.findall('',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(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(vedio_parm[2],cid)

    spider.get_vedio(video_con[0],vedio_parm[0])

  附上参考资料:

  %D5%BE

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

  附b站下载视频助手工具

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

  

  主程序:bspider

  编写语言:python3

  下载目录:运行目录

  推荐系统:win7 64位

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线