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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值