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异常学习笔记
Feb 03 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
Python 加密与解密小结
Dec 06 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 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
PHP中GET变量的使用
2006/10/09 PHP
写出高质量的PHP程序
2012/02/04 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
浅谈js原生拖放
2016/11/21 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python类的继承和多态代码详解
2017/12/27 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Python reduce函数作用及实例解析
2020/05/08 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
NET程序员上机面试题
2015/05/23 面试题
服务中心夜班服务员岗位职责
2013/11/27 职场文书
基层干部十八大感言
2014/01/19 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
红色故事演讲稿
2014/05/22 职场文书
个人租房协议书样本
2014/10/01 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
邀请函格式范文
2015/02/02 职场文书
小学中队活动总结
2015/05/11 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL