写作前面的话:最近准备重温一下算法导论,感谢大网易把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://pan.baidu.com/s/1sjuID5b

2.绿色版软件下载地址(exe):

http://pan.baidu.com/s/1nt9JPkH

3.各个扩展包下载地址:

http://pan.baidu.com/s/1nt5akjv

(完)

文档信息

手把手教你用python打造网易公开课视频下载软件1-总述的更多相关文章

  1. 手把手教你用python打造网易公开课视频下载软件4-图形化界面

    上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标 ...

  2. 手把手教你用python打造网易公开课视频下载软件2-编码相关说明

    函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...

  3. 手把手教你用python打造网易公开课视频下载软件5-python生成exe程序

    python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core ...

  4. 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理

    上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...

  5. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  6. 手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝

    手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝ 想用python做机器学习吗,是不是在为从哪开始挠头?这里我假定你是新手,这篇文章里咱们一起用Python完成第一个机器学习项目.我会手把手 ...

  7. 手把手教你用Python搭建自己的量化回测框架【均值回归策略】

    手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...

  8. 手把手教你吧Python应用到实际开发 不再空谈悟法✍✍✍

    手把手教你吧Python应用到实际开发 不再空谈悟法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

  9. 手把手教你把Python应用到实际开发 不再空谈语法

    手把手教你把Python应用到实际开发 不再空谈语法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

随机推荐

  1. 3G产品升级相关知识

    1.3G产品升级时,内核,文件系统,boot,应用程序,全都升级了,是在boot里升的; 2.拨号模式里的 chap:公网; pap:专网 3.用来查看U盘挂在哪个目录下: cat /proc/par ...

  2. ready与onload区别一

    <!DOCTYPE html><html> <head> <title>ready与onload区别一</title> <meta c ...

  3. nginx url 重写

    rewrite ^([^\.]*)/platform/(.+)/(.+)-(.+)\.html$ $1/platform.php?mod=asklist&ym=$2&fl=$3& ...

  4. C# onverride、abstract、vitrtual、new、sealed

    abstract: 抽象方法是隐式的虚方法 在抽象方法声明中,不能使用static或者virtual修饰符 override: override关键字提供派生类对基类方法的新的实现,重写的基类方法必须 ...

  5. 【洛谷P1196】银河英雄传说

    有特殊意义的一道题-- 加权并查集,我们增加cnt.deep数组 分别表示i点所在链共有多少个点,以及路径压缩之前点i在链中的深度 每次合并时直接修改cnt,路径压缩的同时更新deep 因为每次查询之 ...

  6. 如何删除选中的checkbox

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. JAVA里的异常

    一.概念和分类 JAVA程序设计语言中,异常对象都是Throwable类的一个实例.Throwable分为Error和Exception. 其中,Error类层次结构描述了JAVA运行时系统的内部错误 ...

  8. 轻松创建R语言函数包

    讲真,用R这么几年,始终未尝试过写自己的包,看来这就是我与真正程序员的差距了——编程习惯等于没有. 昨天一个偶然的机会想开始写自己的工具包,发现了前期教程的有一些过时.于是,写一个**windows* ...

  9. ant 的详细的入门教程

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  10. 小游戏runpig总结

    前几天写了一个JavaScript小游戏,大概是这样的 demo:strongfanfan.top/RunPig  源代码:www.github.com/strongfanfan/RunPig 画风简 ...