视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
利用Python实现Youku视频批量下载功能实例
2020-11-27 14:25:33 责编:小采
文档
 前段时间由于收集视频数据的需要,自己捣鼓了一个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:下载视频的时候就会发现,国内这些视频网页做的真的不够精细,含有太多的重复链接和坏死链接,小小鄙视一下。

下载本文
显示全文
专题