Python实现Youku视频批量下载功能

发布时间 - 2026-01-11 00:09:38    点击率:

前段时间由于收集视频数据的需要,自己捣鼓了一个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

  程序思想很简单,就是通过解析网页数据找到相应的视频播放网页链接,然后根据播放页面找到下载的链接,如下图所示:

  由于从网页数据中获得的下载链接是必须通过youku自己的iku才能下载的。这一点费了我一番周折,侥幸发现iku这个软件的命令行非常简单(直接iku download_link即可),所以最简单的办法就是利用Python中的命令行接口os.system来调用iku来下载视频。另外注意程序运行之前需要先启动iku,否则下载完一个视频就要再启动一次。

PS:下载视频的时候就会发现,国内这些视频网页做的真的不够精细,含有太多的重复链接和坏死链接,小小鄙视一下。

以上所述是小编给大家介绍的Python实现Youku视频批量下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# python  # youku  # 批量下载视频  # Python爬虫实战案例之爬取喜马拉雅音频数据详解  # python爬虫智能翻页批量下载文件的实例详解  # 用python批量下载apk  # python 根据列表批量下载网易云音乐的免费音乐  # 用python爬虫批量下载pdf的实现  # python FTP批量下载/删除/上传实例  # 使用python3批量下载rbsp数据的示例代码  # 如何基于Python批量下载音乐  # python爬虫 批量下载zabbix文档代码实例  # python实现抖音视频批量下载  # python+POP3实现批量下载邮件附件  # python实现壁纸批量下载代码实例  # Python爬虫之批量下载喜马拉雅音频  # 命令行  # 视频播放  # 给大家  # 下载链接  # 小编  # 自己的  # 就会  # 太多  # 在此  # 很简单  # 所示  # 拿出来  # 最简单  # 所述  # 前段时间  # 还挺  # 给我留言  # 要再  # 感谢大家  # 如下图 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何获取上海专业网站定制建站电话?  nginx修改上传文件大小限制的方法  新三国志曹操传主线渭水交兵攻略  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Python文件异常处理策略_健壮性说明【指导】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Python进程池调度策略_任务分发说明【指导】  Mybatis 中的insertOrUpdate操作  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何在万网主机上快速搭建网站?  WordPress 子目录安装中正确处理脚本路径的完整指南  如何将凡科建站内容保存为本地文件?  canvas 画布在主流浏览器中的尺寸限制详细介绍  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  香港服务器租用费用高吗?如何避免常见误区?  Android okhttputils现在进度显示实例代码  如何在万网自助建站中设置域名及备案?  如何快速生成高效建站系统源代码?  Swift开发中switch语句值绑定模式  历史网站制作软件,华为如何找回被删除的网站?  如何在宝塔面板中创建新站点?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  网站优化排名时,需要考虑哪些问题呢?  如何快速生成凡客建站的专业级图册?  在线教育网站制作平台,山西立德教育官网?  Linux系统运维自动化项目教程_Ansible批量管理实战  用yum安装MySQLdb模块的步骤方法  Laravel如何使用Eloquent进行子查询  如何撰写建站申请书?关键要点有哪些?  音响网站制作视频教程,隆霸音响官方网站?  米侠浏览器网页背景异常怎么办 米侠显示修复  如何快速启动建站代理加盟业务?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  西安专业网站制作公司有哪些,陕西省建行官方网站?  浅述节点的创建及常见功能的实现  lovemo网页版地址 lovemo官网手机登录  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  详解Oracle修改字段类型方法总结  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何做网站制作流程,*游戏网站怎么搭建?  Android Socket接口实现即时通讯实例代码  MySQL查询结果复制到新表的方法(更新、插入)