1. 程式人生 > >[douyin_downloader] python 非同步抖音爬蟲

[douyin_downloader] python 非同步抖音爬蟲

douyin_downloader

                                 88                                     88
                                 88                                     ""
                                 88
                         ,adPPYb,88  ,adPPYba,  88       88 8b       d8 88 8b,dPPYba,
                        a8"    `Y88 a8"     "8a 88       88 `8b     d8' 88 88P'   `"8a
                        8b       88 8b       d8 88       88  `8b   d8'  88 88       88
                        "8a,   ,d88 "8a,   ,a8" "8a,   ,a88   `8b,d8'   88 88       88
                         `"8bbdP"Y8  `"YbbdP"'   `"YbbdP'Y8     Y88'    88 88       88
                                                                d8'
                                                               d8'
         88                                            88                                 88
         88                                            88                                 88
         88                                            88                                 88
 ,adPPYb,88  ,adPPYba,  8b      db      d8 8b,dPPYba,  88  ,adPPYba,  ,adPPYYba,  ,adPPYb,88  ,adPPYba, 8b,dPPYba,
a8"    `Y88 a8"     "8a `8b    d88b    d8' 88P'   `"8a 88 a8"     "8a ""     `Y8 a8"    `Y88 a8P_____88 88P'   "Y8
8b       88 8b       d8  `8b  d8'`8b  d8'  88       88 88 8b       d8 ,adPPPPP88 8b       88 8PP""""""" 88
"8a,   ,d88 "8a,   ,a8"   `8bd8'  `8bd8'   88       88 88 "8a,   ,a8" 88,    ,88 "8a,   ,d88 "8b,   ,aa 88
 `"8bbdP"Y8  `"YbbdP"'      YP      YP     88       88 88  `"YbbdP"'  `"8bbdP"Y8  `"8bbdP"Y8  `"Ybbd8"' 88

如果你也是曾經沉迷過抖音,那我相信你的抖音裡面點讚的視訊數量一定不比我的少。但是最近我遇到了一個煩惱,很多以前點讚的視訊都被作者刪掉了,感覺很可惜…為了避免再發生這類事情,我決定先把已經喜歡的視訊下載下來!然而事情並沒有我想的那麼簡單,我發現在手機上下載簡直是龜速!WTF???

在這裡插入圖片描述

所以不得不充分發揮我的聰明才智–上網搜一下有沒有現成的抖音下載器!於是找到了 https://github.com/AppSign/douyinhttps://github.com/hacksman/spider_world . 在我嘗試著用現有輪子來下載我的喜歡列表的過程中,我發現在我的渣渣網速下,等半天沒下載成功還丟擲了異常,然後重新下載…形成了一個死迴圈。鑑於大神們已經將最艱難的資料抓包分析給出了下載相關demo,所以我乾脆就自己寫一個更順手的爬蟲了,擼起袖子就搞出來了這個工具~至少在我的渣渣網速下,可以順利達成我的目標了。為了造福和我一樣的 douyiner ,稍加整理了一下程式碼,歡迎大家嘗試,如果使用過程中遇到了什麼不順手的,歡迎提出您寶貴的建議。

用法

安裝後使用:

  1. 安裝可選如下幾種方式:
  • 原始碼安裝: git clone https://github.com/HeLiangHIT/douyin_downloader.git && cd douyin_downloader && python setup.py install
  • pip源安裝: pip install douyin_downloader
  1. 使用: 在cmd下執行 douyin_downloader 命令,然後根據提示輸入使用者id/下載型別/是否下載關注使用者等引數。
Input user_id:123
Choose action[1.favorite, 2.post] *default 1:
Do you want to follow user? [yes/no] *default no:
Input video save dir *default /Users/heliang/Movies/douyin/:
begin to download 123's favorite video to /Users/heliang/Movies/douyin/ ...
...

從原始碼執行:

檢視幫助: python douyin_downloader.py --help

抖音下載器: 非同步下載抖音視訊。 follow 引數用於指定是否是下載關注的使用者視訊。

Usage:
  douyin_downloader.py [--dir=dir] [--concurrency=concurrency] [--follow=follow] <user> <action> follow
  douyin_downloader.py [--dir=dir] [--concurrency=concurrency] [--follow=follow] <user> <action>
  douyin_downloader.py --version

Options:
  --dir=dir                    select file save dir. * default: '$HOME/Movies/douyin/'
  --concurrency=concurrency    select the concurrency number of downloader. [default: 20]

關於使用者 user_id 的獲取, 參考 https://github.com/hacksman/spider_world 的介紹。大致流程是 抖音>我>右上角…>分享個人主頁>以圖片形式分享到微信>微信掃碼獲取url地址>比如http…/user/84834596404最後的數字就是user_id值了。

舉例:

  1. python douyin_downloader.py 84834596404 favorite 下載使用者 84834596404 喜歡過的視訊。
  2. python douyin_downloader.py --dir=. --concurrency=10 84834596404 post 下載使用者 84834596404 上傳的視訊。
  3. python douyin_downloader.py 84838778760 favorite follow 下載使用者 84838778760 關注的使用者喜歡過的視訊。
  4. python douyin_downloader.py 84838778760 post follow 下載使用者 84838778760 關注的使用者上傳的視訊。

下載過程和結果展示:

下載中
下載結果
下載視訊列表
在這裡插入圖片描述

TODO

  • 從首頁依次爬取抖音所有點選量超過1w的視訊下載…
  • 順藤摸瓜,爬取自己關注的人->爬取他們關注的人…把整個抖音資料庫都扒下來了,看看有沒有用…
  • 融入美女自動識別等功能(可以參考 Douyin-Bot )。

參考

歡迎掃碼關注作者,獲取更多資訊哦~另外如果本原始碼對你有所幫助,可以點贊以支援作者的持續更新

關注作者