對你沒有看錯!不到 10 行代碼完成抖音熱門視頻的爬取!

最近研究了一下抖音的爬蟲,目前實現了熱門話題和熱門音樂下面全部相關視頻的爬取,而且我已經將該爬蟲打包成了一個 Python 庫併發布,名稱就叫作 douyin,利用該庫能夠使用不到 10 行代碼完成熱門視頻的下載、相關音樂的下載以及結構化信息的存儲。git

本文就來詳細介紹一下這個庫的用法和一些核心邏輯實現。github

實例演示

在開始介紹以前,咱們就先看看這個庫能達到怎樣的爬取效果吧,這裏咱們想要爬取的部分是這這樣的:數據庫

圖片

這裏是抖音搜索界面熱門話題和熱門音樂部分,每個話題或音樂都有着很是高的熱度,並且每一個熱門話題或音樂下面都是相關的抖音視頻。併發

下面咱們要作的就是把全部熱門話題和音樂下的相關視頻都爬取到,而且將爬到的視頻下載下來,同時還要把視頻所配的音樂也單獨下載下來,不只如此,全部視頻的相關信息如發佈人、點贊數、評論數、發佈時間、發佈人、發佈地點等等信息都須要爬取下來,並存儲到 MongoDB 數據庫。app

聽起來彷佛挺繁瑣的是吧?其實有了 douyin 這個庫,咱們不到 10 行代碼就能夠完成上面的任務了!其 GitHub 地址是:https://github.com/Python3WebSpider/DouYin。ide

首先第一步咱們須要安裝一下 douyin 庫,命令以下:spa

pip3 install douyin

使用示例以下:code

import douyin
from douyin.structures import Topic, Music

# 定義視頻下載、音頻下載、MongoDB 存儲的處理器
video_file_handler = douyin.handlers.VideoFileHandler(folder='./videos')
music_file_handler = douyin.handlers.MusicFileHandler(folder='./musics')
mongo_handler = douyin.handlers.MongoHandler()
# 定義下載器,並將三個處理器當作參數傳遞
downloader = douyin.downloaders.VideoDownloader([mongo_handler, video_file_handler, music_file_handler])
# 循環爬取抖音熱榜信息並下載存儲
for result in douyin.hot.trend():
    for item in result.data:
        # 爬取熱門話題和熱門音樂下面的全部視頻,每一個話題或音樂最多爬取 100 個相關視頻。
        downloader.download(item.videos(max=100))

好,這樣就完成了,運行這段代碼,便可以完成熱門話題、熱門音樂下面全部視頻和音樂的爬取,並將相關信息存儲到 MongoDB 數據庫。orm

另外值得注意的是,在運行這段代碼以前首先須要安裝好 MongoDB 數據庫併成功開啓服務,這樣才能確保代碼能夠正常鏈接數據庫並把數據成功存儲。視頻

咱們看下運行效果:

Item <Topic: <1565818716518401, panama>>
Processing <Video: <6616517521098935565, 真香#panama>> ...
Processing <Video: <6500385230921141518, 哈哈哈哈哈>> ...
...
Processing <Video: <6479958542747962637
相關文章
相關標籤/搜索