手把手教你用python打造网易公开课视频下载软件1-总述
写作前面的话:最近准备重温一下算法导论,感谢大网易把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
#coding:utf-8 import urllib from bs4 import BeautifulSoup import chardet import os import pickle import wx def getdownLoadInfo(url): #课程名 courseTitle='' #课程数目 courseCount=0 #可下载视频数目 videoCount=0 #视频下载地址 videoUrl=[] #读取网页源文件到html,并处理后存入soup rawhtml=urllib.urlopen(url).read() htmlencoding=chardet.detect(rawhtml)['encoding'] html=rawhtml.decode(htmlencoding,'ignore').encode('utf-8') soup=BeautifulSoup(html) #对soup进行分析 courseTitle=soup.find(name='title').contents[0] courseInfo=soup.find(attrs={"id":"list2"}) courseTitleInfo=courseInfo.find_all(attrs={"class":"u-ctitle"}) courseVideoInfo=courseInfo.find_all(attrs={"class":"u-cdown"}) for content in courseTitleInfo: courseCount=courseCount+1 for link in courseVideoInfo: href=link.find(attrs={"class":"downbtn"}) if type(href)==type(None): pass else: href=link.find(attrs={"class":"downbtn"}).get("href") videoCount=videoCount+1 videoUrl.append(href) return courseTitle,courseCount,videoCount,videoUrl def showInfo(event): # url=r"http://v.163.com/special/opencourse/algorithms.html" textArea.SetValue("") url=text.GetValue() courseTitle,courseCount,videoCount,videoUrl=getdownLoadInfo(url) labelInfo.SetLabel(u'课程名称:'+courseTitle+'\n'+u',课程总集数:'+unicode(courseCount)+'\n'+u',可下载集数:'+unicode(videoCount)) for value in videoUrl: textArea.AppendText(value+'\n') if __name__=='__main__': #创建APP app=wx.App(False) #创建frame窗口 frame=wx.Frame(parent=None,title=u'下载网易公开课v1.0',size=(800,600),style=wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX) frame.Center() #创建Menu menuBar=wx.MenuBar() menu1=wx.Menu() menuBar.Append(menu1,u"文件") #创建工具栏 toolbar=frame.CreateToolBar() #创建Panel panel=wx.Panel(frame) panel.SetBackgroundColour('white') label=wx.StaticText(panel,label=u'请输入公开课地址:') font=wx.Font(13,wx.DECORATIVE,wx.NORMAL,wx.NORMAL) label.SetFont(font) text=wx.TextCtrl(panel,size=(700,-1)) button=wx.Button(panel,label=u'提取下载地址') button.SetFont(font) frame.Bind(wx.EVT_BUTTON,showInfo, button) labelInfo=wx.StaticText(panel,size=(-1,50)) textArea=wx.TextCtrl(panel,style=wx.TE_MULTILINE,size=(700,300)) #用sizer控制界面 sizer=wx.FlexGridSizer(cols=1,vgap=10) sizer.AddMany([label,text,button,labelInfo,textArea]) panel.SetSizer(sizer) # #创建状态栏 statusBar=frame.CreateStatusBar() frame.Show(True) app.MainLoop()
down163openv1.0.py
2.exe程序贴图:
第三、各个资源下载地址:(用的360网盘)
1.源代码下载地址:
http://pan.baidu.com/s/1sjuID5b
2.绿色版软件下载地址(exe):
http://pan.baidu.com/s/1nt9JPkH
3.各个扩展包下载地址:
http://pan.baidu.com/s/1nt5akjv
(完)
文档信息
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
- 本文为原创文章,欢迎转载,后续本博客会不断更新,因此请保留该文档信息。
- 本文地址:http://www.cnblogs.com/wuguanglei/p/3763119.html
手把手教你用python打造网易公开课视频下载软件1-总述的更多相关文章
- 手把手教你用python打造网易公开课视频下载软件4-图形化界面
上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标 ...
- 手把手教你用python打造网易公开课视频下载软件2-编码相关说明
函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...
- 手把手教你用python打造网易公开课视频下载软件5-python生成exe程序
python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core ...
- 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理
上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...
- 【python】10分钟教你用python打造贪吃蛇超详细教程
10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...
- 手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝
手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝ 想用python做机器学习吗,是不是在为从哪开始挠头?这里我假定你是新手,这篇文章里咱们一起用Python完成第一个机器学习项目.我会手把手 ...
- 手把手教你用Python搭建自己的量化回测框架【均值回归策略】
手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...
- 手把手教你吧Python应用到实际开发 不再空谈悟法✍✍✍
手把手教你吧Python应用到实际开发 不再空谈悟法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...
- 手把手教你把Python应用到实际开发 不再空谈语法
手把手教你把Python应用到实际开发 不再空谈语法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...
随机推荐
- git使用--git命令项目提交问题总结
提交遇到Error "remote ref does not exist"解决办法:git fetch -p MY_REMOTE eg. git fetch -p o ...
- ngnix 502 bad gateway 的解决办法之空间满了
网站一直运行都很正常,但某天登录后台却出现502 bad gateway,上网搜索都是一大堆解决办法,没可操作性.网站难道出现安全问题?这个应该很少概率.最后排查发现空间满了. 使用命令:df -hl ...
- Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码
本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理 1.用户登录 验证用户是否登录成功步骤直 ...
- 在 iTunes content中创建新的版本时,出现构建版本后面没有加号。
老项目升级时,提交版本时,ipa已经上传成功到APP store,但是构建版本后面一直都没有加号,等了一夜还是没有反应 后来苹果发来一封邮件,意思是,我需要在plist文件中添加一个NSMicroph ...
- UITextField使用详解
转iOS中UITextField使用详解 (1) //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFr ...
- SQl server 关于重复插入数据的测试
最近发布的脚本,有那种防止重复插入数据(包括存在时更新,不存在是插入的处理,判断的方向可能与下面的示例相反) 使用类似下面的 SQL declare @id int, @value int if no ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- hadoop多次搭建后,完整总结(累死宝宝了,搭建了十多遍了)
1.安装JDK1.1上传运用软件FileZilla,将windows上的jdk压缩包放到linux的root目录下 1.2解压jdk #创建文件夹 mkdir /usr/java(不要挂在在" ...
- Spring中获取数据库表主键序列
在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...
- Arcgis API For IOS扩展AGSDynamicLayer新旧版API对比
AGSDynamicLayer(ForSubclassEyesOnly) Category Reference Description This category organizes the meth ...