手把手教你用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开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...
随机推荐
- linux挂载数据盘
http://jingyan.baidu.com/article/90808022d2e9a3fd91c80fe9.html
- phpredis中文文档 [转]
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
- iOS emoji表情转码 或者判断
如果项目中有评论或者信息恢复的地方,往往会用到emoji,有时候如后台不支持emoji,就会显示乱码错误,我们可以把emoji转成unicode编码或者utf8编码格式传给服务器.当然如果后台服务器接 ...
- 如何解决pycharm输入中文报错问题
在pycharm中的python文件中输入中文会报错SyntaxError: 问题解决方法在文件开头添加 : # -*- coding:utf-8 -*- 每次添加都很麻烦,一劳永逸解决此问题的方法: ...
- BZOJ1742[Usaco2005 nov]Grazing on the Run
Description John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我们可 以认为草地是一个数轴上的一些点.Joseph看到这些草非常兴奋, ...
- 关于mock server
这篇技术博客是在知乎上看到的 知乎js大神张云龙写的 这里贴过来记录下,如果侵权 请告知将及时删除. --------------------------- 为了更好的分工合作,让前端能在不依赖后端环 ...
- 黑马程序员_Java基础:反射机制(Reflection)总结
------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...
- IIS 部署 node.js ---- 基础安装部署
一些可能有用的相关文章: https://blogs.msdn.microsoft.com/scott_hanselman/2011/11/28/window-iisnode-js/ http://b ...
- 「2014-3-13」Javascript Engine, Java VM, Python interpreter, PyPy – a glance
提要: url anchor (ajax) => javascript engine (1~4 articles) => java VM vs. python interpreter =& ...