PYTHON批量下载B站视频小脚本

无聊废话

最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天。。。视频被下架了了。。。呃。。。(⊙o⊙)…


PYTHON批量下载B站视频小脚本_第1张图片
视频被下架

视频被下架了。。。我学了一半呀。。。哭。。。
在网上一顿找,依旧找不到。。。
得不到的永远在骚动。。。(歌词。。。)
为了不让自己重蹈覆辙所以我想把我想看的B站视频在“偷偷的”下载下来。。。存到自己的硬盘里。。。嘿嘿嘿。。。


PYTHON批量下载B站视频小脚本_第2张图片
教学视频嘿嘿嘿。。。

于是说干就干。。。不留遗憾。。。于是打开浏览器 → “如何下载B站视频?” →enter

诶。。。这个是不错

但是尼玛我这里有213个视频呀。。。

PYTHON批量下载B站视频小脚本_第3张图片
213个视频

我怎么获取下载链接呀?一个一个复制粘贴手会断啊喂。。。
request太难,不会。。。
Beautifulsoup不会。。。
selenium嘿嘿嘿。。。还不手起刀落。。。个屁啊。。。为啥输出有但是实际用Xpath就是没结果呀。。。
算了,我只要一个网页,程序搞不定的活,我搞,反正就一次,我真是天才。。。

好,人工获取网页源码。。。。哔。。。。
使用Xpath读取我的网页文件,然后获取一大堆链接。然后获取一个个链接的列表,so easy。。。
搞定。。。接下来就是到网址那里取下载啦。。。哈哈哈哈。。。

等等。。。213个。。。。


PYTHON批量下载B站视频小脚本_第4张图片
213个视频

一个一个放到网站点下载,手会断啊喂。。。
果然这个东西不是一次百度可以搞定的。既然如此,那就百度两次。。。
打开浏览器 → “如何批量下载B站视频?” →enter

网上一阵搜索,发现you-get。。。https://github.com/soimort/you-get

PYTHON批量下载B站视频小脚本_第5张图片
使用简单

OK,fork you!!!


PYTHON批量下载B站视频小脚本_第6张图片
fork you

嘿嘿嘿。。。不错,就是你啦,不用图形操作,只要提供一个链接即可下载B站视频,就是你啦。。。(关键还能装逼。。。嘿嘿。。。)

诶。。。等等,我怎们让python运行cmd命令呀。。。
一顿百度,借鉴(copy)之后。。。脚本就写好啦。。。

代码

#coding=utf-8
import requests
import lxml
from lxml import etree
import os
import sys
import you_get
import time


#==========================配置参数====================
#html文件路径
html_path = r'html.html'
#视频保存路径
path = r'G:\bilibili_flv'
#==========================配置参数====================



# 读取html文件
html_doc = open(html_path).read()
# print(html_doc)
mytree = etree.HTML(html_doc)
# print(etree.tostring(mytree))

#用xpath提取下载链接形成list
url_list = mytree.xpath("/html/body/ul //@href")
# print(url_list)
print("列表长度:%s" % len(url_list))

#调用you-get下载视频
def download(url, path):
    sys.argv = ['you-get', '-o', path, url]
    #使用代理命令:    you-get -x 127.0.0.1:1080 [url]
    you_get.main()


#上班时间等待
def waiting():
    # 规定时间静默
    print("等待中。。。")
    while True:
        # str_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
        str_time = time.strftime("%H%M%S", time.localtime())
        #9点15分-18点
        if int(str_time) >= 91500 and int(str_time) <= 180000:
            # print(str_time)
            print('.', end="")
            time.sleep(60)
        else:
            print(str_time)
            # time.sleep(1)
            break

#主程序
if __name__ == '__main__':
    i = 1
    # 循环下载
    for url in url_list:
        #定时器
        # waiting()
        try:
            link = "https://www.bilibili.com%s" % url
            print('%s 下载中。。。第%s个' % (link, i))
            download(link, path)
            time.sleep(2)
        finally:
            i += 1

PYTHON批量下载B站视频小脚本_第7张图片
下载截图

list-box代码的获取

我的视频链接源代码文件:html.html
获取方法:Chrome浏览器按F12,选择对应的“list-box”元素,然后:右键→copy→copy outerHTML,将list-box元素代码保存到txt中。

PYTHON批量下载B站视频小脚本_第8张图片
选取“list-box”元素


你可能感兴趣的:(PYTHON批量下载B站视频小脚本)