Python批量下载优酷视频实战:基于BeautifulSoup与iku命令行工具
本文介绍使用Python 2.7结合BeautifulSoup3.2.1实现优酷视频批量下载的方法。通过解析网页数据获取播放链接,利用Python的os.system调用iku命令行工具完成下载。文章详细说明了程序逻辑、环境配置及注意事项,旨在提供一种实用且高效的视频数据采集方案。
此前因收集视频数据的需求,我开发了一款优酷视频批量下载工具。尽管功能基础,但实用性较强,现整理分享供参考。
运行环境要求:Python 2.7版本,配合BeautifulSoup 3.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
核心逻辑在于解析网页源码以定位视频播放页面的URL,进而从播放页提取下载链接,具体流程参考下图展示。

网页源码中的下载链接需通过优酷内部的iku工具进行实际下载。这一环节曾耗费较多时间,后发现iku命令行操作极为简便(仅需执行iku download_link命令)。因此,最直接的方案是利用Python中的os.system接口调用iku执行下载任务。需注意,程序运行前必须先启动iku进程,否则每下载一个视频后需重新手动启动一次。
补充说明:在下载过程中可见,国内部分视频网站页面设计存在缺陷,包含大量重复链接及无效(坏死)链接,体验有待优化。
以上即为利用Python实现优酷视频批量下载功能的完整介绍,希望能为读者提供帮助。如有任何疑问,欢迎留言交流,我将及时回复。同时感谢各位对本站的支持与关注。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













