Python實(shí)現(xiàn)Youku視頻批量下載功能
前段時(shí)間由于收集視頻數(shù)據(jù)的需要,自己搗鼓了一個(gè)YouKu視頻批量下載的程序。東西雖然簡單,但還挺實(shí)用的,拿出來分享給大家。
版本:Python2.7+BeautifulSoup3.2.1
import urllib,urllib2,sys,os from BeautifulSoup import BeautifulSoup import itertools,re url_i =1 pic_num = 1 #自己定義的引號格式轉(zhuǎn)換函數(shù) def _en_to_cn(str): obj = itertools.cycle(['“','”']) _obj = lambda x: obj.next() return re.sub(r"['\"]",_obj,str) if __name__ == '__main__': #下載連續(xù)3個(gè)網(wǎng)頁的視頻 while url_i <= 3: webContent = urllib2.urlopen("http://news.youku.com/focus/index/_page26716_" + str(url_i) + ".html") data = webContent.read() #利用BeautifulSoup讀取視頻列表網(wǎng)頁數(shù)據(jù) soup = BeautifulSoup(data) print "-------------------------Page " + str(url_i) + "-------------------------" #獲得相應(yīng)頁面的視頻thumbnail和title的list tag_list_thumb = soup.findAll('li','v_thumb') tag_list = soup.findAll('li', "v_title") for item in tag_list: #通過每個(gè)thumbnail中的herf導(dǎo)向視頻播放頁面 web_video_play = urllib2.urlopen(item.a['href']) data_vp = web_video_play.read() #利用BeautifulSoup讀取視頻播放網(wǎng)頁數(shù)據(jù) soup_vp = BeautifulSoup(data_vp) #找到“下載”對應(yīng)的鏈接 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 #調(diào)用命令行運(yùn)行iku下載視頻,需將iku加入環(huán)境變量 os.system("iku " + url_dw) #保存每個(gè)視頻的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
程序思想很簡單,就是通過解析網(wǎng)頁數(shù)據(jù)找到相應(yīng)的視頻播放網(wǎng)頁鏈接,然后根據(jù)播放頁面找到下載的鏈接,如下圖所示:
由于從網(wǎng)頁數(shù)據(jù)中獲得的下載鏈接是必須通過youku自己的iku才能下載的。這一點(diǎn)費(fèi)了我一番周折,僥幸發(fā)現(xiàn)iku這個(gè)軟件的命令行非常簡單(直接iku download_link即可),所以最簡單的辦法就是利用Python中的命令行接口os.system來調(diào)用iku來下載視頻。另外注意程序運(yùn)行之前需要先啟動iku,否則下載完一個(gè)視頻就要再啟動一次。
PS:下載視頻的時(shí)候就會發(fā)現(xiàn),國內(nèi)這些視頻網(wǎng)頁做的真的不夠精細(xì),含有太多的重復(fù)鏈接和壞死鏈接,小小鄙視一下。
以上所述是小編給大家介紹的Python實(shí)現(xiàn)Youku視頻批量下載功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Python爬蟲實(shí)戰(zhàn)案例之爬取喜馬拉雅音頻數(shù)據(jù)詳解
- python爬蟲智能翻頁批量下載文件的實(shí)例詳解
- 用python批量下載apk
- python 根據(jù)列表批量下載網(wǎng)易云音樂的免費(fèi)音樂
- 用python爬蟲批量下載pdf的實(shí)現(xiàn)
- python FTP批量下載/刪除/上傳實(shí)例
- 使用python3批量下載rbsp數(shù)據(jù)的示例代碼
- 如何基于Python批量下載音樂
- python爬蟲 批量下載zabbix文檔代碼實(shí)例
- python實(shí)現(xiàn)抖音視頻批量下載
- python+POP3實(shí)現(xiàn)批量下載郵件附件
- python實(shí)現(xiàn)壁紙批量下載代碼實(shí)例
- Python爬蟲之批量下載喜馬拉雅音頻
相關(guān)文章
python?sns.countplot()?繪畫條形圖詳情
這篇文章主要介紹了python?sns.countplot()繪畫條形圖詳情,sns.countplot()用于畫類別特征的頻數(shù)條形圖,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-06-06解決nohup執(zhí)行python程序log文件寫入不及時(shí)的問題
今天小編就為大家分享一篇解決nohup執(zhí)行python程序log文件寫入不及時(shí)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python調(diào)用文字識別OCR輕松搞定驗(yàn)證碼
本文主要介紹了python調(diào)用文字識別OCR輕松搞定驗(yàn)證碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Python調(diào)用百度AI實(shí)現(xiàn)顏值評分功能
這篇文章主要介紹了應(yīng)用百度AI的人臉識別功能對年齡、性別、顏值等進(jìn)行識別,代碼具有一定的學(xué)習(xí)價(jià)值,感興趣的朋友跟隨小編一起看看吧2021-11-11Pytorch DataLoader shuffle驗(yàn)證方式
這篇文章主要介紹了Pytorch DataLoader shuffle驗(yàn)證方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06django將圖片上傳數(shù)據(jù)庫后在前端顯式的方法
今天小編就為大家分享一篇django將圖片上傳數(shù)據(jù)庫后在前端顯式的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python學(xué)習(xí)教程之常用的內(nèi)置函數(shù)大全
python給我們提供了很多已經(jīng)定義好的函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)教程之一些常用的內(nèi)置函數(shù),文中分享了關(guān)于數(shù)學(xué)函數(shù)、功能函數(shù)、類型轉(zhuǎn)換函數(shù)、字符串處理和序列處理函數(shù)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07

python Popen 獲取輸出,等待運(yùn)行完成示例