手把手教你用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

 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

时间: 2024-10-03 13:59:58

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

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

上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标签,例如<div>hello</,这样的错误,那么怎么处理呢?接着看下面的代码: soup=BeautifulSoup(html) 其中利用模块BeautifulSoap,可能很方便去整理html源文件内容,这里我写了个小例子,大家看一下,代码如下: html='<html>&l

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

上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标签:显示为:"请输入公开课地址" (2)一个文本框:用来输入地址 (3)一个按钮:点击用来提取视频信息 (4)一个标签和多行文本框,其中标签用来显示课程信息,多行文本用来显示下载链接 完成后的效果图如下: 我们先贴出代码: #创建APP app=wx.App(False) #创建frame

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

函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount),视频下载链接(videoUrl):不过再讲解之前,需要对编码的相关知识进行说明: #coding:utf-8 关于python编码的问题,的确是个值得研究的问题,因为简直是乱的一塌糊涂,大家可以看一些讲解的文章,这里不做深入讲解,只是给出结论性的东西,方便实际的使用: 1.正因为有了中文,才有了一

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

python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core import setup import py2exe setup(windows=["down163openv1.0.py"]) 其中"down163openv1.0.py "就是要转换的python程序,注意该文件与conver2exe.py在同一个文件夹下面 第二

用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

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

10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 01 整体框架 平台:pycharm 关于pygame的安装这里就不在赘述,大家自行上网找合适自己的版本的安装即可.关于pygame模块知识会穿插在下面代码中介绍,用到什么就介绍什么.这里就不统一介绍了. 整个程序由于是调用了大量的pygame里面的库函数,所以也非常简单(卧槽你这不是调包侠嘛).也就

手把手教你搭建Python虚拟环境,还不会赶紧收藏学习哦!

不同的python项目可能会用到不同的包,而不同的包或不同的python版本之间可能存在冲突.因此,为每个项目创建不同的虚拟环境非常有用.它可以保证一个项目只访问,它所在虚拟环境下安装的包,保持全局解释器的干净整洁,而且由于环境是独立的,因此不需要超户权限. 创建虚拟环境的方式一般有以下几种. 一种是自Python 3.3增加的用于创建虚拟环境的venv标准库.使用这种方法会在指定目录下,创建一个指定虚拟环境名字的文件夹. 像下面这样,在我创建了一个名为 vir1 的虚拟环境后,产生了一个对应的

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

手把手教你把Python应用到实际开发 不再空谈语法 1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions) 大多数的Python程序员都知道且使用过列表推导(list comprehensions).如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短.简洁的创建一个list的方法. >>> some_list = [1, 2, 3, 4, 5] >&

手把手教你使用Python抓取QQ音乐数据!

[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐数据(第二弹)我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评. 通过手把手教你使用Python抓取QQ音乐数据(第三弹)我们实现了获取更多评论并生成词云图. 此次我们将将三个项目封装在一起,通过菜单控制爬取不同数据. [二.需要的库] 主要涉及的库有:requests.openpyxl.