Python 爬取微博短視頻

最近因爲比較忙,但是我覺得再忙也需要給自己安排一點娛樂時間,對自己好點,自己對自己不好,誰會?

自己娛樂一般會有:跑步、看電影、短視頻,而短視頻是最家常的娛樂方式,看得最多的小視頻是「 陳翔六點半 」,咦!拍得搞笑,演技也一流,也不乏有內涵!非常推薦大家看看。

但我不推薦大家用「抖音」看短視頻,因爲它的算法實在太強大了、內容也非常抓人性!一入抖音深似海,從此時間是狗屎!

因此我推薦大家到「微信看一看」、「QQ空間、「微博」裏去瞧一瞧,最推薦是「微博」,但千萬別花太多時間,也出於不要浪費太多時間去翻各種頁,看一些原本自己沒有打算看的信息,因爲這些平臺的算法真的是太瞭解我們自己,99% 的人都比不過它瞭解我們自己,數據的價值被這些平臺利用得淋漓盡致,因此我這次去爬視頻,數據是微博的,讓我自己不要花太多時間在搜索,瀏覽或者觀看一些對自己沒多大意義的信息數據,讓自己想看哪些小視頻就只看哪些小視頻,僅此而已。

時間太貴,我耗不起


正題

先上爬取短視頻的效果圖,duang、duang、duang、想下載什麼就是什麼,哈哈。

打開瀏覽器(電腦版,方便調試)輸入微博 url :https://m.weibo.cn,點擊輸入框,輸入「陳翔六點半」,回車搜索

但是發現在這個頁面就只用幾個視頻。滑下一點,一看,有個「更多熱門微博」,點擊!

跳轉到新頁面,一看,一滑,就像一個無底洞!一直滑都會有視頻!

咦,這不就是我要的視頻數據嘛

仔細看地址,不知大家有沒仔細看地址欄,我滑動時,地址是一直不變的,也就證明這網頁是用 Ajax 來異步請求加載數據的!

我就馬上按 F12 調出調試工具,點擊 Network 選項卡,選中 XHR ,一邊滑動網頁,一邊查看 Ajax 網絡請求,選中一條查看

展開 Json 數據查看,可以看到每條視頻微博數據,總供有十條

我想下載視頻,如何快速找到視頻的下載地址而不是每一個數據點開來看呢?我想想能不能借助了谷歌瀏覽器的忙。

隨便點開其中一個視頻,右鍵,竟然可以查看並複製視頻鏈接

複製到視頻鏈接後,貼到地址欄,回車訪問,也能播放,大喜呀!

馬上回到調試工具,點擊 preview 預覽數據,按 Ctrl + F 進行搜索,把剛剛複製的地址貼到搜索框

咦,竟然匹配到了!

發現 media_info 中的 stream_url 就是該視頻的播放地址,也就是下載地址。再往前看,media_info 前面的 content2 是視頻的在微博中的標題。

查看其他的 Json 數據也同樣有視頻地址和標題,複製裏面的 視頻地址 url 貼到瀏覽器地址欄也能直接播放視頻!八九不離十,這個 stream_url 就是視頻下載地址了。

馬上構造請求,根據剛剛複製的視頻地址獲取資源,並下載視頻,看看有沒有什麼端倪,此時心中忐忑不安

很快就下載好了


點擊播放視頻,竟然毫無毛病,流暢播放!這下好了!就 kuang、kuang、kuang 準備開始擼代碼了,不要慫,就是幹!

認真查看請求地址、請求頭中的請求地址,請求方法和 User—Agent 等,開始構建請求方法模擬 Ajax 請求,獲取 Json 數據。


查看多幾次異步請求,就會發現,變化的參數只有 page,可以一步步把一個參數刪掉後測試一下能不能正常獲取數據,這樣把一些非不要的參數剔除。裏面有一些註釋,是我踩過的坑,有興趣就多看幾眼,希望各位看客能分享一下(在下方留言)在 python 爬蟲上入過的一些坑,讓彼此少躺槍!獲取到了頁面後,構建方法解析 Json 數據,分析 Json 數據中的層級結構,把裏面的視頻名和視頻下載地址提取出來。

這裏有個快捷查出 stream_url 層級結構路徑,選中該屬性或者說節點,右鍵,copy property path

再粘貼到瀏覽器地址欄查看即可清晰知道它們之間的層級結構

面對這種多層 json 格式數據,我知道有上面兩種取值方式,代碼中也說明了各的優勢和缺點,按需選取。如果你還有更優雅的方式,希望你能在下方留言。

之後在,主函數中循環、遍歷調用前面的方法,就下載指定到多少頁的視頻了

嗨皮時刻,效果如下

上面的代碼中還有許多需要優化之處,比如下載時重名怎麼辦、各種參數的有效性判斷等等,後面我也會優化一下,把它優化成:只用要用戶輸入自己喜歡的小視頻製作方,如「 陳翔六點半」,再指定想看多少個視頻或者多少頁,後就自動下載視頻,下載好了,就可以嗨皮娛樂一波了。關鍵是自己省很多時間,不得不像那些優秀的算法和大數據屈服

關注微信公衆號:MoTec,查看更多爬蟲的技術文章及電子書和視頻。

如果你想瞧瞧這個小 demo,歡迎在公衆號後臺回覆 「爬取微博小視頻」獲取。


推薦閱讀

    代碼樹,你知道嗎?

    Python 帶你學潮汕話

    知道如何學習,學會學習 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章