python下载pps视频
思路
视频播放地址提取
直接解析一下原网页的源文件,利用正则就可以得到所有视频的播放地址,下面的代码以微信公共平台python教程的播放地址为例。
视频链接提取
这里利用了飞驴视频下载API进行视频链接提取,按照API的格式填写相关参数就ok了
视频下载并保存
使用urllib.urlretrieve函数保存视频就可以了
源代码
源代码贴出来,大家相互学习一下。代码比较简单,是按照上面的思路一步步做的,这里就不详细解释了
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import re
import base64
import os
#下载微信-python教学视频主函数
def down_weixin_python(url):
#获取一个页面下的所有视频播放链接
html = urllib.urlopen(url).read().decode('gbk').encode('utf-8')
pattern = re.compile(r'><a\shref="(.*?)"\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 down_video(video_url, file_name):
path = unicode(file_name, '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 each_link in url:
down_weixin_python(each_link)
个人原创,转载请注明出处!
转自:http://www.cnblogs.com/Jack-Lee/p/3735345
2019-03-02 01:03
知识点
相关教程
更多python的下载与安装
python的官网:http://www.python.org/ 有两个版本,就像struts1和struts2,由于版本差别太大,所以都保留着更新。python2.x的最新版本是Python 2.7.5,下载地址:http://www.python.org/download/releases/2.7.5/ python3.x的最新版本是Python 3.3.2,下载地址:http://www.python.org/download/releases/3.3.2/
shiro视频教程免费下载
第一天:基于url权限管理 shiro基础,原理知识:对权限管理的理解,什么是权限管理,用户认证,用户授权,权限管理的解决方案,基于url的权限管理开发实现(重点),shiro基础:shiro架构(重点), shiro进行用户认证的方法(重点),shiro进行用户授权的方法(重点)第二天:shiro应用, shiro与企业web项目整合开发的方法
最新hadoop2.x视频教程下载
网络上现在很多视频都是hadoop1.x的。 如果要下载1.x的可以点击以下链接下载,或者直接搜索 http://www.656463.com/search/?word=hadoop Hadoop实战清晰视频教程 本视频是尚学堂最新录制的hadoop2.x免费视频教程,希望对大家有所帮助 课程目录: 01_尚学堂_肖斌_hadoop_hdfs1分布式文件系统01 02_尚学堂_肖斌_hadoop
JavaSE进阶全套课程视频教程下载
|----资料及源代码.zip 资料及源代码 |----动力节点-勇哥微信二维码-扫一扫有惊喜.jpg 动力节点-勇哥微信二维码-扫一扫有惊喜 |----动力节点-手机版网站二维码-扫一扫浏览更方便.png 动力节点-手机版网站二维码-扫一扫浏览更方便 --------java基础视频说明.txt |----java基础视频说明 |----java基础视频说明.zip Java基础视频观看说明 2
Storm快速入门【公开课视频下载】
Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。而且支持水平扩展,具有高容错性,保证每个消息都会得到处理。通过本次公开课大家会对Storm有一个比较全面的了解和认识
Storm视频教程Storm项目实战开发下载
Storm视频教程Storm项目实战开发下载 Storm视频教程Storm项目实战开发免费下载地址:http://pan.baidu.com/s/1hq7Sqag 课程分类:大数据 适合人群:初级 课时数量:25课时 用到技术:Storm集群、Zookeeper集群等 涉及项目:网站PV、UV案例实战、其他案例 更新程度:90%持续更新中 Storm视频教程查看地址:http://www.ibei
云帆大数据Hadoop视频教程下载[70集]
|----下载必看.txt |----企业级Hadoop 2.x应用开发课程一期截图yf1.0.pdf |----企业级Hadoop 2.x项目实战课程yf1.0.pdf |----070_MapReduce 应用案例之手机流量统计代码编写与测试.avi |----069_MapReduce应用案例之手机流量统计分析与数据类型定义和代码模板编写.avi |----068_复习总结如何自定义数据类型
什么是MyBatis?揭秘持久层框架【公开课视频下载】
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射
spring mvc 框架搭建及入门详解【公开课视频下载】
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC ...
传智播客JavaWeb视频教程百度盘下载
注意:首次更新的是第二部分6个模块的内容,排序是第08天 - 第28天(第二部分),第01天-第07天(第一部分)会在第二部分更新完毕发布。 视频介绍: 1. 此套JavaWeb视频为最全面的教程,毫不夸张的说在市面上是独一无二的。课程循序渐进、深入浅出,涉及到所有的知识点。学会本套教程,你就可以完全掌握到JavaWeb开发精髓。 2. 此套JavaWeb视频为最新的教程,很
Android app开发实战第二季【公开课视频下载】
Android入门公开课到此要给大家画上一个圆满的句号啦!通过前面10次的android公开课,相信大家的android开发水平已经初入门径啦,本次的压轴app是一个画板app:随手涂鸦哦,高大上的项目!各位小伙伴记得善...
Android app开发实战第一季【公开课视频下载】
经过前面9期的android基础入门公开课,相信大家对于android课程体系已经有一个比较全面的认识啦!下面就让我们跟随公开课老师完成自己人生中的第一次APP:“美女脱衣服”!12月9日晚8点与你不见不散哦
轻松搞定java基础第一季【公开课视频下载】
传智播客Java讲师风清扬大师带你学习java基础中的独孤九剑,带你纵横知识海洋!本次课程专门针对零基础网友,授课通俗易懂、绝对干货。 如果你还在为自学无门而烦恼,同时更为自学时遇到各种奇葩问题而苦无门路去解决而烦恼,那...
探索 Python,第 1 部分: Python 的内置数值类型
Python 编程语言具有很高的灵活性,它支持多种编程方法,包括过程化的、面向对象的和函数式的。但最重要的是,在 Python 中编写程序是件令人愉悦的事。该语言对开发进程有支持作用,决不会妨碍它。本文主要介绍 Python 及其内置数值类型。
python2和python3的区别
python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%,还有很大的提升空间。 2.编码 Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
最新教程
更多java线程状态详解(6种)
java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞
redis从库只读设置-redis集群管理
默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave. 127.0.0.1:6382> set k3 111 (error) READONLY You can't write against a read only slave. 如果你要开启从库
Netty环境配置
netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。
Netty基于流的传输处理
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据
Netty入门实例-使用POJO代替ByteBuf
使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。
Netty入门实例-时间服务器
Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现
Netty入门实例-编写服务器端程序
channelRead()处理程序方法实现如下
Netty开发环境配置
最新版本的Netty 4.x和JDK 1.6及更高版本
电商平台数据库设计
电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表
HttpClient 上传文件
我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。
MongoDB常用命令
查看当前使用的数据库 > db test 切换数据库 > use foobar switched to db foobar 插入文档 > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new
快速了解MongoDB【基本概念与体系结构】
什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
windows系统安装MongoDB
安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我
Spring boot整合MyBatis-Plus 之二:增删改查
基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baom
分布式ID生成器【snowflake雪花算法】
基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案