Python实现Youku视频批量下载功能


Posted in Python onMarch 14, 2017

前段时间由于收集视频数据的需要,自己捣鼓了一个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

程序思想很简单,就是通过解析网页数据找到相应的视频播放网页链接,然后根据播放页面找到下载的链接,如下图所示:

Python实现Youku视频批量下载功能

由于从网页数据中获得的下载链接是必须通过youku自己的iku才能下载的。这一点费了我一番周折,侥幸发现iku这个软件的命令行非常简单(直接iku download_link即可),所以最简单的办法就是利用Python中的命令行接口os.system来调用iku来下载视频。另外注意程序运行之前需要先启动iku,否则下载完一个视频就要再启动一次。

PS:下载视频的时候就会发现,国内这些视频网页做的真的不够精细,含有太多的重复链接和坏死链接,小小鄙视一下。

以上所述是小编给大家介绍的Python实现Youku视频批量下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python聚类算法之基本K均值实例详解
Nov 20 Python
python安装与使用redis的方法
Apr 19 Python
微信跳一跳python代码实现
Jan 05 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
python版大富翁源代码分享
Nov 19 Python
pytorch多GPU并行运算的实现
Sep 27 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python 实现端口扫描工具
Dec 18 Python
Python实现视频下载功能
Mar 14 #Python
python 实现自动远程登陆scp文件实例代码
Mar 13 #Python
python executemany的使用及注意事项
Mar 13 #Python
Python的标准模块包json详解
Mar 13 #Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 #Python
Python中functools模块函数解析
Mar 12 #Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 #Python
You might like
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
Python处理中文标点符号大集合
2018/05/14 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
数控专业应届生求职信
2013/11/27 职场文书
环保建议书
2014/03/12 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
银行求职信怎么写
2019/06/20 职场文书
详解Python requests模块
2021/06/21 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript