码迷,mamicode.com
首页 > 编程语言 > 详细

python下载pps视频

时间:2014-05-19 13:52:54      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:code   c   http   int   a   strong   

简单的python下载脚本


思路

  • 视频播放地址提取

    直接解析一下原网页的源文件,利用正则就可以得到所有视频的播放地址,下面的代码以微信公共平台python教程的播放地址为例。

  • 视频链接提取

    这里利用了飞驴视频下载API进行视频链接提取,按照API的格式填写相关参数就ok了

  • 视频下载并保存

    使用urllib.urlretrieve函数保存视频就可以了


源代码

源代码贴出来,大家相互学习一下。代码比较简单,是按照上面的思路一步步做的,这里就不详细解释了


```python

!/usr/bin/env python

-- coding: utf-8 --

import urllib import re import base64 import os

下载微信-python教学视频主函数

def downweixinpython(url): #获取一个页面下的所有视频播放链接 html = urllib.urlopen(url).read().decode(‘gbk‘).encode(‘utf-8‘) pattern = re.compile(r‘>?)"\stitle="(.?)"‘) down_link = pattern.findall(html)

print ("本页面共有" + str(len(down_link)) + "个视频" )

i = 1
for each_link in down_link:
    #获取每个视频的下载地址
    api_prefix = each_link[0].replace(‘//‘,‘##‘)
    api_prefix = base64.b64encode(api_prefix)
    api_head = ‘http://api.flvxz.com/url/‘ + api_prefix + ‘/ftype/flv‘

    #解析出视频的真实下载地址
    page = urllib.urlopen(api_head).read()
    link_pattern = re.compile(r‘<file><furl><!\[CDATA\[(.*?)\]\]></furl><ftype>flv</ftype>‘)
    video_link = link_pattern.findall(page)

    print ("正在下载第" + str(i) + "个视频...")
    down_video(video_link, each_link[1])
    i = i + 1

显示下载进度

def Schedule(a, b, c): ‘‘‘ a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ‘‘‘ per = 100.0 * a * b / c if per > 100: per = 100 print ‘%.2f%%‘ % per

下载文件

def downvideo(videourl, filename): path = unicode(filename, ‘utf-8‘)

if os.path.exists(path):
    pass
else:
    os.mkdir(path)

file_name = unicode(file_name, ‘utf-8‘)

if len(video_url) > 1:
    j = 0
    for each_link in video_url:
        save_name = path + ‘\\‘ + file_name + ‘-‘ + str(j) + ‘.f4v‘
        if os.path.isfile(save_name):
            pass
        else:
            urllib.urlretrieve(each_link, save_name, Schedule)
        j = j + 1
else:
    save_name = path + ‘\\‘ + file_name + ‘.f4v‘
    if os.path.isfile(save_name):
        pass
    else:
        urllib.urlretrieve(video_url[0], save_name, Schedule)

url = [‘http://v.pps.tv/11786793?page=1‘, ‘http://v.pps.tv/11786793?page=2‘]

for eachlink in url: downweixinpython(eachlink)
```


个人原创,转载请注明出处!

python下载pps视频,布布扣,bubuko.com

python下载pps视频

标签:code   c   http   int   a   strong   

原文地址:http://www.cnblogs.com/Jack-Lee/p/3735345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!