您的位置:首页 > 编程语言 > Python开发

使用python下载网易云课堂中Andrew Ng的机器学习课程

2016-07-12 11:26 495 查看
看了网易云课堂上stanford大学教授Andrew Ng的机器学习课程,觉得很不错,就想下载下来,正好也在学习python,所以就有了这么一段代码。参考了博客http://blog.csdn.net/u012162613/article/details/41611889

但并非完全使用,因为网易云课堂的网站发生了部分变化,所以抓取网页链接有点不同。

1.先通过网页分析出视频的实际地址

这里使用chrome,F12使用开发者工具,观察Network,刷新网页,查找视频媒体文件,然后得到下图。



可以得到视频的实际网址是:http://mov.bn.netease.com/open-movie/nos/flv/2015/01/19/SAFD9SPUL_sd.flv

所以进到source页面,搜索这串字符,你会发现并没有。所以换个方式,就所有前面的字符 http://mov.bn.netease.com,这会儿就找到了。别问我为什么这么机智,我只是马后炮。在最开始我都是找.mp4,.flv等等这些东西的,在我从上到下,翻阅了网页源码之后确定是这玩意儿的。



2.获取这个网址并下载视频

使用re正则表达式,pattern是r’http://mov.bn.netease.com.*.m3u8’

再使用urllib的urlretrieve方法下载视频,格式是mp4的(别问我为什么是这个格式,网址地址暴露的)。

3.获取所有课程列表

上面的只是获得了一个课程的视频文件,所以要先获得所有课程的网页地址,然后对每个地址解析并下载视频。还是使用正则表达式,pattern是r”http://open.163.com/movie/.*.html”

ok,将所有代码串起来之后就成这样的了。

import urllib2
import re
import urllib
def Get_Url():
src='http://open.163.com/special/opencourse/machinelearning.html'
content=urllib2.urlopen(src).read()
dest=re.findall(r"http://open.163.com/movie/.*\.html",content)
return dest[1:]
def Get_Lesson(src,num):
content=urllib2.urlopen(src).read()
l_pattern=re.compile(r"http.*\.m3u8")
lesson=re.findall(l_pattern,content)
lesson_src=lesson[0].replace("m3u8","mp4")
urllib.urlretrieve(lesson_src,"Machine_Learning%s.mp4"%(num))

if __name__ == "__main__":
Lesson_src=Get_Url()
num=1
for lesson in Lesson_src:
Get_Lesson(lesson,num)
num=num+1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python