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的id()函数解密过程
Dec 25 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
在Python的web框架中配置app的教程
Apr 30 Python
Python读写unicode文件的方法
Jul 10 Python
Python打包可执行文件的方法详解
Sep 19 Python
Python随机读取文件实现实例
May 25 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python中upper是做什么用的
Jul 20 Python
Python调用C/C++的方法解析
Aug 05 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
javascript 动态创建表格
2015/01/08 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python subprocess模块详细解读
2018/01/29 Python
python使用knn实现特征向量分类
2018/12/26 Python
python感知机实现代码
2019/01/18 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
python实现邮件自动发送
2019/08/10 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python与pycharm有何区别
2020/07/01 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
教师年终个人自我评价
2013/10/04 职场文书
安全生产检讨书
2014/01/21 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
《所见》教学反思
2016/02/23 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书