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引用模块和查找模块路径
Mar 17 Python
python安装与使用redis的方法
Apr 19 Python
Python实现发送QQ邮件的封装
Jul 14 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Django中使用Celery的方法步骤
Dec 07 Python
python palywright库基本使用
Jan 21 Python
Python基础之pandas数据合并
Apr 27 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基于imap获取邮件实例
2014/11/11 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
python 读写txt文件 json文件的实现方法
2016/10/22 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
python 对key为时间的dict排序方法
2018/10/17 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
应届大学生自荐信
2013/12/05 职场文书
《尊严》教学反思
2014/02/11 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
品牌宣传方案
2014/03/21 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
教师工作表现自我评价
2015/03/05 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
html5表单的required属性使用
2021/07/07 HTML / CSS
Mysql开启外网访问
2022/05/15 MySQL
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android