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抓取京东图书评论数据
Aug 31 Python
Python简单计算文件夹大小的方法
Jul 14 Python
python中字符串类型json操作的注意事项
May 02 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
jupyter notebook 重装教程
Apr 16 Python
Python爬虫新手入门之初学lxml库
Dec 20 Python
python神经网络编程之手写数字识别
May 08 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 smarty模版引擎中的缓存应用
2009/12/11 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python基于WordCloud制作词云图
2019/11/29 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python将数据插入数据库的代码分享
2020/08/16 Python
如何利用python 读取配置文件
2021/01/06 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
垃圾桶标语
2014/06/24 职场文书
实习协议书
2015/01/27 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
计生个人工作总结
2015/02/28 职场文书
家长会主持词开场白
2015/05/29 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
搭建Yolov5服务器
2022/04/30 Servers