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的Flask框架中实现全文搜索功能
Apr 20 Python
python对html代码进行escape编码的方法
May 04 Python
Python进阶-函数默认参数(详解)
May 18 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python3实现点餐系统
Jan 24 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python定义一个函数的方法
Jun 15 Python
python time()的实例用法
Nov 03 Python
django中ImageField的使用详解
Dec 21 Python
Python - 10行代码集2000张美女图
May 23 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检测useragent版本示例
2014/03/24 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
python中字符串前面加r的作用
2015/06/04 Python
Python实例一个类背后发生了什么
2016/02/09 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
keras实现多种分类网络的方式
2020/06/11 Python
几款好用的python工具库(小结)
2020/10/20 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
经销商会议欢迎词
2014/01/11 职场文书
保护动物倡议书
2014/04/15 职场文书
班级文化标语
2014/06/23 职场文书
设计师求职信
2014/07/01 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python