Python实现Youku视频批量下载功能
作者:J_Outsider 发布时间:2022-08-14 21:16:45
标签:python,youku,批量,下载
前段时间由于收集视频数据的需要,自己捣鼓了一个YouKu视频批量下载的程序。东西虽然简单,但还挺实用的,拿出来分享给大家。
版本:Python2.7+BeautifulSoup3.2.1
import urllib,urllib2,sys,os
from BeautifulSoup import BeautifulSoup
import itertools,re
url_i =1
pic_num = 1
#自己定义的引号格式转换函数
def _en_to_cn(str):
obj = itertools.cycle(['“','”'])
_obj = lambda x: obj.next()
return re.sub(r"['\"]",_obj,str)
if __name__ == '__main__':
#下载连续3个网页的视频
while url_i <= 3:
webContent = urllib2.urlopen("http://news.youku.com/focus/index/_page26716_" + str(url_i) + ".html")
data = webContent.read()
#利用BeautifulSoup读取视频列表网页数据
soup = BeautifulSoup(data)
print "-------------------------Page " + str(url_i) + "-------------------------"
#获得相应页面的视频thumbnail和title的list
tag_list_thumb = soup.findAll('li','v_thumb')
tag_list = soup.findAll('li', "v_title")
for item in tag_list:
#通过每个thumbnail中的herf导向视频播放页面
web_video_play = urllib2.urlopen(item.a['href'])
data_vp = web_video_play.read()
#利用BeautifulSoup读取视频播放网页数据
soup_vp = BeautifulSoup(data_vp)
#找到“下载”对应的链接
tag_vp_list = soup_vp.findAll('a', id = 'fn_download')
for item_vp in tag_vp_list:
#将下载链接保存到url_dw中
url_dw = '"' + item_vp['_href'] + '"'
print item.a['title'] + ": " + url_dw
#调用命令行运行iku下载视频,需将iku加入环境变量
os.system("iku " + url_dw)
#保存每个视频的thumbnail
for item_thumb in tag_list_thumb:
urllib.urlretrieve(item_thumb.img['src'], "E:\\下载视频\\thumbnails\\" + str(pic_num) + "." +
_en_to_cn(item_thumb.img['title']) + ".jpg")
pic_num += 1
print "--------------------------------------------------------------"
print "--------Page " + str(url_i) + "'s video thumbnails have been saved!"
url_i += 1
程序思想很简单,就是通过解析网页数据找到相应的视频播放网页链接,然后根据播放页面找到下载的链接,如下图所示:
由于从网页数据中获得的下载链接是必须通过youku自己的iku才能下载的。这一点费了我一番周折,侥幸发现iku这个软件的命令行非常简单(直接iku download_link即可),所以最简单的办法就是利用Python中的命令行接口os.system来调用iku来下载视频。另外注意程序运行之前需要先启动iku,否则下载完一个视频就要再启动一次。
PS:下载视频的时候就会发现,国内这些视频网页做的真的不够精细,含有太多的重复链接和坏死链接,小小鄙视一下。
以上所述是小编给大家介绍的Python实现Youku视频批量下载功能网站的支持!
来源:http://www.cnblogs.com/eyeszjwang/archive/2012/04/11/2442894.html


猜你喜欢
- 使用python + shell 编写,是一个简易solaris系统巡检程序#!/usr/bin/python -u#-*- coding:
- 前言:加班原因是上线,解决线上数据库存在重复数据的问题,发现了程序的bug,很好解决,有点问题的是,修正线上的重复数据。线上库有6个表存在重
- 如下所示:public function a(){ return $this->belongsTo('App\Mo
- PyCharm设置数据库,查询数据库语句1、首先先安装BataBase数据插件2、打开DB Navigator 打开DataBase视图3、
- 本文实例讲述了Symfony模板的快捷变量用法。分享给大家供大家参考,具体如下:在模板里,有一些symfony变量可以直接使用。通过这些快捷
- 程序能实现什么a.完成gap值的自定义输入以及两条需比对序列的输入b.完成得分矩阵的计算及输出c.输出序列比对结果d.使用matplotli
- 字典由多个键及与其对应的值构成的对组成(把键值对成为项),每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开,而整个字典由一对大括号
- 一. 开发前的准备1. 必须了解的知识 SDK:软件开发工具包,可以为开发者提供快速开发的工具沙箱环境:也就是测试环境支付宝支付金额的精度:
- 先了解如何利用python语言实现以平面和标记物进行姿态估计本实验只是先实现一个简单的小例子。简单来说就是先识别出图像中的参考面,再拍摄一张
- PyCharm安装配置Qt Designer+PyUIC教程1、安装依赖命令形式pip install PyQt5pip install p
- 看如下asp代码:<%@ codepage="65001" %><!-- 
- 目录0x01 字符串(string)引号转义拼接字符串长字符串索引( indexing)运算符in创建列表切片赋值0x02 字符串格式化模板
- 片头语:因为工作需要,在CentOS上搭建环境MySQL+Python+MySQLdb,个人比较习惯使用Windows系统的操作习惯,对纯字
- 本文实例讲述了JS/jQuery实现简单的开关灯效果。分享给大家供大家参考,具体如下:实现效果:html结构只有两个button标签<
- 可能大家在日常工作中会遇到这么个问题,现在基本的linux系统都是自带老版本的python2.7.x版本,我又不想用老版本,但直接升级可能会
- 本文实例讲述了python自定义类并使用的方法。分享给大家供大家参考。具体如下:class Person: def __init
- 连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refe
- 我们都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用
- 在我们的web应用中,虽然PHP、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,在这篇文章中能够有所体
- 先上两段代码<script>var i = 2;function test(){var i = 1;}test();alert(