最近准备重温一下算法导论,感谢大网易把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()
down163openv1.0.py
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