Python實現Youku視頻批量下載功能
前段時間由于收集視頻數據的需要,自己搗鼓了一個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__':
#下載連續(xù)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加入環(huán)境變量
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才能下載的。這一點費了我一番周折,僥幸發(fā)現iku這個軟件的命令行非常簡單(直接iku download_link即可),所以最簡單的辦法就是利用Python中的命令行接口os.system來調用iku來下載視頻。另外注意程序運行之前需要先啟動iku,否則下載完一個視頻就要再啟動一次。
PS:下載視頻的時候就會發(fā)現,國內這些視頻網頁做的真的不夠精細,含有太多的重復鏈接和壞死鏈接,小小鄙視一下。
以上所述是小編給大家介紹的Python實現Youku視頻批量下載功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
python?sns.countplot()?繪畫條形圖詳情
這篇文章主要介紹了python?sns.countplot()繪畫條形圖詳情,sns.countplot()用于畫類別特征的頻數條形圖,更多相關內容需要的朋友可以參考一下2022-06-06
解決nohup執(zhí)行python程序log文件寫入不及時的問題
今天小編就為大家分享一篇解決nohup執(zhí)行python程序log文件寫入不及時的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Pytorch DataLoader shuffle驗證方式
這篇文章主要介紹了Pytorch DataLoader shuffle驗證方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Python中使用Tkinter模塊創(chuàng)建GUI程序實例
這篇文章主要介紹了Python中使用Tkinter模塊創(chuàng)建GUI程序實例,本文給出了創(chuàng)建窗口、文本框、按鈕等實例,需要的朋友可以參考下2015-01-01

