初用python爬取麦x学院python教学视频

想学python,苦于无资源,偶然得知有人说有全套麦某学院的教学视频,赶紧留了个邮箱,几天无果,只能自己动手了

来到麦某学院的官方网站,发现网站上的视频都是免费的,是直接用html5视频的,于是一颗爬虫的种子悄然的发芽了


第一步:打开网站的源代码,用截取各阶段的相应章节地址

1. 从主页上看,python教学视频分成了四个阶段,我们需要把每个阶段的一系列视频都捕获到


2.分析该页面的源代码,发现所有视频链接都在 class=“lead-img”的<a href="" .....里面


于是通过代码:

<span style="font-size:18px;">pythonreg = re.compile(r'lead-img">.+?<a href="(.+?)" title="(.+?)"', re.DOTALL)
pagedata = pythonreg .findall(html)</span>
截取得数据:
<span style="font-size:18px;">/course/python/425-5465</span>
再与根目录拼接就可到达下图的相应教程中


第二步:根据第一步所截取的所有章节的地址获取所有章节的课程地址

1. 随手打开一个章节,发现最右边有全部课程的相关链接




2.再看网页源代码


所有信息都在<div id = “playlist” 的 <li 的 href=""中

于是可通过代码:

<span style="font-size:18px;">partreg = re.compile(r'id="playlist".+?<div>', re.DOTALL)       # 获取课程数据的一部分
datareg = re.compile(r'<li.+?href="(.+?)"', re.DOTALL)          # 将课程链接剥离出来
coursedata = datareg.findall(partreg.findall(html))</span>
获取每个视频的播放地址
<span style="font-size:18px;">/course/python/425-5466/</span>


第三步:从microohvideo中提取出视频下载地址


<span style="font-size:18px;">mp4reg = re.compile(r'id="microohvideo".+?src="(.+?)"', re.DOTALL)</span>
得到视频地址
www.xxxx.com/csshtml3.m4v


至此已经得到了麦x学院的所有python教学视频链接

我将这些链接地址全部存入mysql中,最后附上代码

<pre name="code" class="python"># -*-coding:utf-8-*-
# --------------------
# 爬取麦x学院python教程的大纲链接
# 2015.10.26
# ---------------------
import re       # 正则表达式
import urllib2     # 从地址获取网页源代码
import saveDate2DB # 数据库的操作

# 打开网页utl
# 用reg规则返回自己要的数据
def getdata(url,reg):
    webpage = urllib2.urlopen(url, timeout=10)
    html = webpage.read()
    pagedata = reg.findall(html)
    return pagedata

pythonurl = "http://www.maiziedu.com/course/python/"        # 数据源网址
pythonreg = re.compile(r'lead-img">.+?<a href="(.+?)" title="(.+?)"', re.DOTALL)    # 各阶段的章节地址
pythons = getdata(pythonurl, pythonreg)      # python大纲中的子地址

urls = []
for course in pythons:      # 从python大纲把所有课程链接找出来
    print '-----------------正在获取', course[1], '课程链接---------------------'
    partreg = re.compile(r'id="playlist".+?<div>', re.DOTALL)       # 获取playlist部分
    datareg = re.compile(r'<li.+?href="(.+?)"', re.DOTALL)          # 将playlist部分中的课程链接剥离出来
    mp4reg = re.compile(r'id="microohvideo".+?src="(.+?)"', re.DOTALL)      # 将视频匹配出来

    courseurl = "http://www.maiziedu.com" + course[0]
    coursedata = datareg.findall(getdata(courseurl, partreg)[0])        # 获取所有课程视频的链接

    mp4urls = []        # 将所有视频地址存入list中
    for mp4html in coursedata:
        mp4url = getdata('http://www.maiziedu.com'+mp4html, mp4reg)
        print mp4url[0]
        mp4urls.append(mp4url[0])
    # saveDate2DB.savedata(course[1], mp4urls)    # 将数据存入数据库





 


程序运行结果:



另外,我还做了另一项有趣的行动

将下载链接转换为qq旋风下载链接

用程序打开qq旋风并且将数据一个个下载



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值