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()

网易公开课python爬取_用python打造网易公开课视频下载软件相关推荐

  1. python 爬取_使用 Python 和 BeautifulSoup 来做爬虫抓取

    First Scraping Hello World 这是 HTML 网页最基础的符号.每一个 都服务于网页的一块区域: 1.  : HTML 文档的开头必须以一个文档类型声明开始: 2. HTML ...

  2. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...

    原标题:利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息 新型肺炎肆虐全国,可以预知,最近一两年地理学中会有一部分论文研究新型肺炎的空间分布及与其他指标的关联分析.获取其患病人 ...

  3. python制作pdf教程_学以致用:Python爬取廖大Python教程制作pdf!

    学以致用:Python爬取廖大Python教程制作pdf! python-tutorial-pdf 当我学了廖大的Python教程后,感觉总得做点什么,正好自己想随时查阅,于是就开始有了制作PDF这个 ...

  4. python爬取小说爬取_用python爬取笔趣阁小说

    原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...

  5. python输入数据爬取_利用 Python 爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  6. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息

    新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...

  7. Python爬取哔哩哔哩(bilibili)视频

    本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了多了就不多说了喜欢的朋有可以收藏,转发请复 ...

  8. Python爬取「英语流利说」的配音视频数据(第一次粉一个人)

    一.故事开端 程序猿有时候很痛苦,遇到问题解决不了就睡不着,也找不到人倾诉,只能通过失眠来解脱,那天长夜漫漫,我却无心睡眠,就拿起手机继续刷朋友圈,发现了睡前故事这个信息: 就手贱点进去一看,妈呀顿时 ...

  9. 如何用python爬取网页数据,python爬取网页详细教程

    大家好,本文将围绕python怎么爬取网站所有网页展开说明,如何用python爬取网页数据是一个很多人都想弄明白的事情,想搞清楚python如何爬取网页数据需要先了解以下几个事情. 1.如何用Pyth ...

最新文章

  1. Java成员变量与类变量_Java基础随记2-成员变量和类变量的区别
  2. Redis相比memcached
  3. web前端url传递值 js加密解密
  4. Golang——单元测试testing
  5. java追加字符串到文件_java 将字符串追加到文件已有内容后面的操作
  6. launchpad乐器_请把《明日之子》里徐洋称为哆啦A洋,还有什么乐器是你不会的?...
  7. geoda权重矩阵导入matlab,空间计量 用geoda创建空间权重矩阵
  8. 寻路大数据:海量数据与大规模分析
  9. SPSS软件入门常识
  10. 他捧红了王菲、张学友等近百个巨星,却甘心成为最普通的学佛人…
  11. AI:人工智能领域之国内外人工智能产业应用图谱应用层/基础层详解—AI八大应用领域之医疗/家居/驾驶/零售/城市/教育/金融/交通、(AI三大基础(算法【计算机视觉/自然语言处理/机器学习、科研院所/
  12. 麦克纳姆轮(全向轮)
  13. deploy 在私有仓库部署包 aven-metadata.xml 出现空文档报错 解决方案
  14. Sublime Text的使用代码块安装的模块
  15. 计算机位的英语,计算机中位的英文名字为()
  16. android7.1 打印机 (ghostscript+hpijs - hplip)
  17. 4米乘以12米CAD图_设备时序图的绘制方法
  18. heic(HEIF)格式图像处理(一)
  19. Linux——远程管理篇
  20. 如何解决Namespace declaration statement has to be the very first statement or after any declare call

热门文章

  1. 怎么识别图片上的文字?看完这篇你就会了
  2. 不同数据库之间表数据的实时同步_syncnavigator数据库同步工具
  3. 一款Java开源的Spring Boot即时通讯IM聊天系统
  4. 花 1 分钟写了一段爬虫,帮实现微信抢号成功
  5. 最强数据集集合:50个最佳机器学习公共数据集
  6. Keras创建ANN模型的四种方法
  7. AE完整版中文软件免费下载安装及破解
  8. 《用户思维 众创时代下的用户获取.体验.转化与留存》读书笔记
  9. 【运维面试】面试官:LVS与nginx有什么区别
  10. 2个网卡配置相同ip 华为交换机_华为交换机自动获取ip配置