手把手教你用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开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...
随机推荐
- AndroidLinker与SO加壳技术之上篇
1. 前言 Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环.目前Android 应用加固可以分为dex加固和Native加固,N ...
- Mac 下安装ruby,以及CocoaPods安装以及使用网摘
ruby安装网址:https://ruby-china.org/wiki/install_ruby_guide CocoaPods安装和使用教程地址:http://code4app.com/artic ...
- IOS 6和 IOS7适配的一些问题
由于在做一个ios的通用设计平台,那么客户端解析的时候就涉及到一些ios不同版本,不同分辨率的适配问题 首先碰到的就是navigation bar中的item的背景色的问题 在ios7中设置setti ...
- node学习笔记(二)
process.stdout(); //标准输出流 process.stdout.write() //提供了比console.log更底层的接口 process.stdin(); //标准输入流 // ...
- android 定义 程序 Scheme 接收特定URI开启Activity
场景:通过浏览器打开URL或者扫描软件扫描URL来启动本地应用 <intent-filter> <category android:name="android.intent ...
- NOI 4976:硬币
描述 宇航员Bob有一天来到火星上,他有收集硬币的习惯.于是他将火星上所有面值的硬币都收集起来了,一共有n种,每种只有一个:面值分别为a1,a2- an. Bob在机场看到了一个特别喜欢的礼物,想买来 ...
- 用UEFI安装ArchLinux 20140105
为了在E431上用UEFI安装Arch一个晚上重装了5,6次系统,整整做了一个通宵,还好是周六.今天刚好有时间正好 来总结一下.因为要用UEFI来安装,所以安装了两次之后发现UEFI环境变量不可用(用 ...
- 表格里使用text-overflow后不能隐藏超出的文本的解决方法
当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超 ...
- angularjs 表单验证(不完整版)
针对项目实践表单验证总结: angular 的 form表单验证:form内需要novalidate取消默认验证,用ng自己的验证,form的名字是非常必要的 栗子:以注册为栗子,下面是注册的部分: ...
- springMVC基础配置
web.xml文件 <?xml version="1.0" encoding="UTF-8"?><web-app version= ...