當前位置:
首頁 > 知識 > python爬取youtube視頻 多線程 非中文自動翻譯

python爬取youtube視頻 多線程 非中文自動翻譯

環境

Python2.7+Windows10

網站很乾凈清爽,這次做的是基於關鍵字搜索來爬那些相關視頻,這樣就能很好的分類了,若輸入中文搜索,那結果也一般都是國內視頻,英文的話 那就是國外的。

這裡先來測試中文的 ,輸入""搞笑"",搜出來很多視頻,也可以根據條件篩選,YouTube視頻鏈接很有規律,都是這種https://www.youtube.com/watch?v=v_OVBHGwOaU,只有後面的 v值不一樣,這裡就叫id吧。

ok,先從最簡單的開始,查看網頁源代碼看看這些視頻鏈接是否都是在裡面,我睜大了我的24k單身狗的眼睛找出來了。。。看了一下,視頻信息全在這個標籤裡面。

既然如此,那就直接上正則表達式來匹配

"url":"/watch?v=(.*?)","webPageType"

這樣就能匹配出ID來。但是 這好像只有第一頁的視頻,那第二頁的呢,經常觀察,此方法不行,視頻翻頁是基於ajax請求來的,源碼裡面的信息始終都是第一頁的數據,ok 那既然這樣,我們來分析ajax請求,我喜歡用谷歌瀏覽器,打開開發者工具,network,來抓包。

滑鼠一直往下拉,會自動請求,是個post請求,一看就是返回的視頻信息。

看到這裡很高興,離勝利已經不遠了。但,我們先來看下headers 以及發送的post參數,看了之後 就一句 wtf。。。

一萬個羊駝在奔騰,我把那些加密的參數都標記了,前後端交互,既然是發過去的數據,那肯定已經在前端產生了,至於什麼產生的,那就要一步一步分析來了,最後。對 我沒有分析出來。。。剛開始挨著挨查看js文件,參數的確是在js裡面產生的,但。。。tmd寫的太複雜了。。。能力有限,解決不了。難道就這樣放棄了嗎。肯定不會,不然 各位也不會看到這篇文章了。於是,我靈機一動,在地址欄裡面輸入&page= 結果,真的返回視頻了。。。卧槽 哈哈哈,我當時真是很開心呢。因為前端頁面上並沒有翻頁按鈕,沒想到竟然還真的可以這樣翻頁。。。哈哈

既然這都被我猜出來了,那思路就很清晰了,翻頁--獲得源代碼-- 正則匹配 --就可以批量得到視頻鏈接了,然後去重後 在想辦法直接通過這個鏈接去下載。於是,一陣百度 谷歌 找到很多方法,也找到很多api,ok 那就不必要重複造輪子,直接拿來用吧。

有一個開源項目youtube-dl 在github上 是個命令行的應用,安裝之後,他是這樣的。

youtube-dl -F https://www.youtube.com/watch?v=_iupLGTX890

這樣就能直接分析出所有視頻格式的信息,然後通過id 就可以下載下來了。是很好用的一個工具。

在代碼裡面怎麼使用呢,直接調用cmd命令就行了,但是。經過我測試發現呢,批量下載時候,老是有一些視頻沒有下載完整,所以 我就沒用這個方法了,在國外網站上找到一個api 還蠻不錯。

怎麼找 怎麼使用api 我就不用介紹了吧,等會直接貼代碼,大家一看便知。

這裡在說下,當我輸入關鍵字是英文的話,搜出來的結果全部是英文的,於是 我就下載成功後,保存文件 翻譯一下他的標題。翻譯成中文的,我去找翻譯,最後就用金山詞霸了,如果使用官方api的話,好像也有收費。。那不行,我要直接爬頁面,於是,我就直接還是爬他的翻譯頁面,提交英文,返回中文,解析網頁,正則匹配出來。就這樣 嘿嘿嘿。。

ok。說了這麼多了 現在上代碼。

在這裡在說一下,我當時用的win10 所有編碼全是gbk的,若在linux上面跑,請自行修改。也是多線程下載的,默認下載目錄 d:youtube 然後會根據關鍵字在創建子目錄,視頻都放在裡面。對了 還有我代碼裡面用篩選了,只爬1天之內更新的。每天爬一遍即可。

來測試一下。下載的時候 就是考驗網速的時候了,網不好了,可能會出現一些我沒捕獲的異常。。。可能是我找的fq伺服器網速還行。。

作者:冰藍的河

源自:

http://www.cnblogs.com/binglansky/p/8534544.html

聲明:文章著作權歸作者所有,如有侵權,請聯繫小編刪除

福利在此手快有又慢無


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 python 的精彩文章:

Python小白進階之路,你準備好了嗎?
教你用python擼走《百萬英雄》《沖頂大會》獎金

TAG:python |