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编程中的运用实例
Jun 26 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
Python向excel中写入数据的方法
May 05 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
python 实现逻辑回归
Dec 30 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
hadoop常见错误以及处理方法详解
2013/06/19 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
javascript Keycode对照表
2009/10/24 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
python 基础教程之Map使用方法
2017/01/17 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Python中Selenium库使用教程详解
2020/07/23 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
初一科学教学反思
2014/01/27 职场文书
安全生产专项整治方案
2014/05/06 职场文书
幼师求职自荐信
2014/05/31 职场文书
煤矿安全协议书
2014/08/20 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
医院保洁员岗位职责
2015/02/13 职场文书