最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html
在线看时,网速实在太慢,于是决定下载下来,一个一个的下载不是我等IT男所能忍受的,用迅雷抓取吧,不是特别爽,恰巧前两天刚刚看了下python,于是准备自己写个小软件,练练手,正好可以用这个实际的东西,练练python。
好吧,既然是总述,那么我把接下来要讲的东西的整体轮廓都写在这篇里面,所有需要下载的资源也都会在这里贴出,而对里面代码的具体解释,写在后面的几篇文章里面,对里面的知识点进行总结。
主要分为三部分:1.整体要实现的功能。2.贴出程序源代码及exe程序贴图3.各个资源下载地址
好吧,啰嗦半天,正式开始写!
第一、整体要实现的功能
1.根据url地址,获取课程视频地址
2.增加图形化界面
3.将python程序,发布为exe文件,这样大家不安装python就可以运行了
4.由于下载文件名字并不是课程名字,所以下载后要能够实现批量重命名(目前1.0版本未实现)
第二、程序源代码及exe程序贴图
1.程序源代码:down163openv1.0.py
1 #coding:utf-8 2 import urllib 3 from bs4 import BeautifulSoup 4 import chardet 5 import os 6 import pickle 7 import wx 8 def getdownLoadInfo(url): 9 #课程名 10 courseTitle=‘‘ 11 #课程数目 12 courseCount=0 13 #可下载视频数目 14 videoCount=0 15 #视频下载地址 16 videoUrl=[] 17 #读取网页源文件到html,并处理后存入soup 18 rawhtml=urllib.urlopen(url).read() 19 htmlencoding=chardet.detect(rawhtml)[‘encoding‘] 20 html=rawhtml.decode(htmlencoding,‘ignore‘).encode(‘utf-8‘) 21 soup=BeautifulSoup(html) 22 #对soup进行分析 23 courseTitle=soup.find(name=‘title‘).contents[0] 24 courseInfo=soup.find(attrs={"id":"list2"}) 25 courseTitleInfo=courseInfo.find_all(attrs={"class":"u-ctitle"}) 26 courseVideoInfo=courseInfo.find_all(attrs={"class":"u-cdown"}) 27 for content in courseTitleInfo: 28 courseCount=courseCount+1 29 for link in courseVideoInfo: 30 href=link.find(attrs={"class":"downbtn"}) 31 if type(href)==type(None): 32 pass 33 else: 34 href=link.find(attrs={"class":"downbtn"}).get("href") 35 videoCount=videoCount+1 36 videoUrl.append(href) 37 return courseTitle,courseCount,videoCount,videoUrl 38 39 def showInfo(event): 40 # url=r"http://v.163.com/special/opencourse/algorithms.html" 41 textArea.SetValue("") 42 url=text.GetValue() 43 courseTitle,courseCount,videoCount,videoUrl=getdownLoadInfo(url) 44 labelInfo.SetLabel(u‘课程名称:‘+courseTitle+‘\n‘+u‘,课程总集数:‘+unicode(courseCount)+‘\n‘+u‘,可下载集数:‘+unicode(videoCount)) 45 for value in videoUrl: 46 textArea.AppendText(value+‘\n‘) 47 if __name__==‘__main__‘: 48 #创建APP 49 app=wx.App(False) 50 #创建frame窗口 51 frame=wx.Frame(parent=None,title=u‘下载网易公开课v1.0‘,size=(800,600),style=wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX) 52 frame.Center() 53 #创建Menu 54 menuBar=wx.MenuBar() 55 menu1=wx.Menu() 56 menuBar.Append(menu1,u"文件") 57 #创建工具栏 58 toolbar=frame.CreateToolBar() 59 #创建Panel 60 panel=wx.Panel(frame) 61 panel.SetBackgroundColour(‘white‘) 62 63 label=wx.StaticText(panel,label=u‘请输入公开课地址:‘) 64 font=wx.Font(13,wx.DECORATIVE,wx.NORMAL,wx.NORMAL) 65 label.SetFont(font) 66 67 text=wx.TextCtrl(panel,size=(700,-1)) 68 69 button=wx.Button(panel,label=u‘提取下载地址‘) 70 button.SetFont(font) 71 frame.Bind(wx.EVT_BUTTON,showInfo, button) 72 labelInfo=wx.StaticText(panel,size=(-1,50)) 73 textArea=wx.TextCtrl(panel,style=wx.TE_MULTILINE,size=(700,300)) 74 #用sizer控制界面 75 sizer=wx.FlexGridSizer(cols=1,vgap=10) 76 sizer.AddMany([label,text,button,labelInfo,textArea]) 77 panel.SetSizer(sizer) 78 79 # #创建状态栏 80 statusBar=frame.CreateStatusBar() 81 82 frame.Show(True) 83 app.MainLoop()
2.exe程序贴图:
第三、各个资源下载地址:(用的360网盘)
1.源代码下载地址:
http://yunpan.cn/QiTNXAstpLaUU 访问密码 c348
2.绿色版软件下载地址(exe):
http://yunpan.cn/QiTNbGBhUiRJm 访问密码 6fd2
3.各个扩展包下载地址:
(1)bs4:(BeautifulSoup):
http://yunpan.cn/QiTNN7KNLBNdU 访问密码 42ff
(2)chardet:
http://yunpan.cn/QiTN7HipPUhGe 访问密码 260f
(3)wxpython:
http://yunpan.cn/QiTisNmMEsMC9 访问密码 f861
(4)py2exe:
http://yunpan.cn/QiTiyLxfjwX4n 访问密码 06d8
(5)python2.7:
http://yunpan.cn/QiTiZwfRXh7LQ 访问密码 2774
手把手教你用python打造网易公开课视频下载软件1-总述,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/wuguanglei/p/3763119.html