python网易公开课官网_[Python][爬虫]网易公开课下载器,支持多线程,可分别下载视频及字幕...

前言

网上一直都找不到网易公开课的下载工具。哎,那不如自己写一个。

我这个工具只能提取易公开课的视频,不能提取网易云课堂

实现了多线程功能

实现了提取字幕功能

实现了选择画质功能

实现了下载已合成字幕视频功能

添加了分集下载功能

原理

提取网站内容

在浏览器内的开发者工具的Console内输入__NUXT__.state.movie.moiveList可获取影片列表

8I0xGF.png

index:视频列表索引

__NUXT__.state.movie.moiveList视频列表

__NUXT__.state.movie.moiveList[index].title视频名称

__NUXT__.state.movie.moiveList[index].mp4SdUrl标清视频链接

__NUXT__.state.movie.moiveList[index].mp4HdUrl高清视频链接

__NUXT__.state.movie.moiveList[index].mp4ShdUrl超清视频链接

__NUXT__.state.movie.moiveList[index].mp4ShareUrl手机观看视频链接(包含字幕)

__NUXT__.state.movie.moiveList[index].subList字幕列表

__NUXT__.state.movie.moiveList[index].subList[inx].subName字幕语言

__NUXT__.state.movie.moiveList[index].subList[inx].subUrl字幕链接

然后用Python的Selenium模块通过运行js脚本提取

data = driver.execute_script("return <__NUXT__命令>")

下载模块

用requests模块可以实现

import requests

import time

def downloadFile(url,path, name):

r = requests.get(url, stream=True,verify=False)

length = float(r.headers['content-length'])

f = open(path+name, 'wb')

count = 0

count_tmp = 0

time1 = time.time()

for chunk in r.iter_content(chunk_size=512):

if chunk:

f.write(chunk)

count += len(chunk)

if time.time() - time1 > 2:

p = count / length * 100

speed = (count - count_tmp) / 1024 / 1024 / 2

count_tmp = count

print(name + ': ' + formatFloat(p) + '%' + ' Speed: ' + formatFloat(speed) + 'M/S')

time1 = time.time()

f.close()

def formatFloat(num):

return '{:.2f}'.format(num)

软件使用教程

8I1cB4.png

可通过以下几种方式下载

方法一.通过新版课程链接进行下载

方法二.通过旧版课程链接进行下载

方法三.通过视频链接进行下载

下载选项

可选择多少个视频同时下载(线程个数)

可选择字幕和影片是否分开

可选择视频画质(如果原视频可以选择)

可分集下载,用逗号隔开

例如一共有11集,不需要下载第2集和第6集,填1,3-5,7-11

下载全部填all,下载当前视频填origin

若填写课程链接默认下载全部,视频链接默认下载当前视频

效果

none.gif

image.png (27.53 KB, 下载次数: 0)

2020-3-22 23:29 上传

none.gif

image.png (110.7 KB, 下载次数: 1)

2020-3-22 23:30 上传

家里是100M宽带,经过测试基本能达到满速

none.gif

image.png (25.7 KB, 下载次数: 1)

2020-3-23 11:27 上传

项目源码

软件下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值