前言
在之前 [Python爬蟲實例] YouTube-使用 YouTube Data API 教學是使用 YouTube Data API 來取得影片相關資訊,不過如果你只是想抓取影片基本訊息,但不想麻煩去申請 API Key,或許可以改使用一個非常有名的套件 — youtube_dl。
備註:此文僅教育學習,切勿用作商業用途,個人實作皆屬個人行為,本作者不負任何法律責任
套件
本次主要使用到的套件:
📘 爬蟲程式
youtube_dl 主要提供從 YouTube 及其他多個網站下載影片,使用方法非常簡單:
1
2
| with youtube_dl.YoutubeDL() as ydl:
info = ydl.extract_info("影片網址", download=False)
|
因為我們只是想取得影片資訊,並沒有要下載影片,因此 download 帶入 False。
函式回傳的資料即是 dict (字典) 資料型別,我們可以只挑選需要的內容。
程式碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| from pprint import pprint
import youtube_dl
def get_video_info(youtube_url):
video_info = {}
with youtube_dl.YoutubeDL() as ydl:
info = ydl.extract_info(youtube_url, download=False)
# pprint(info)
video_info['ID'] = info.get('id')
video_info['標題'] = info.get('title')
video_info['影片縮圖'] = info.get('thumbnail')
video_info['上傳者'] = info.get('uploader')
video_info['上傳者網址'] = info.get('uploader_url')
video_info['影片長度(秒)'] = info.get('duration')
video_info['觀看次數'] = info.get('view_count')
video_info['留言數'] = info.get('comment_count') # -
video_info['喜歡數'] = info.get('like_count')
video_info['不喜歡數'] = info.get('dislike_count')
video_info['平均評分'] = info.get('average_rating')
video_info['描述'] = info.get('description')
video_info['標籤'] = info.get('tags')
video_info['網頁網址'] = info.get('webpage_url')
video_info['上傳日期'] = info.get('upload_date')
return video_info
if __name__ == '__main__':
video_info = get_video_info('https://www.youtube.com/watch?v=YculJhe_iPk')
pprint(video_info)
|
回傳影片相關資訊結果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| {'ID': 'YculJhe_iPk',
'上傳日期': '20201206',
'上傳者': 'Onion Man',
'上傳者網址': 'http://www.youtube.com/channel/UCzxN4G3s9uR9ao5_O5DoXmA',
'不喜歡數': 230,
'喜歡數': 13735,
'平均評分': 4.9341211,
'影片縮圖': 'https://i.ytimg.com/vi_webp/YculJhe_iPk/maxresdefault.webp?v=5fccb8d3',
'影片長度(秒)': 299,
'描述': '你的請客值有多少?\n'
'\n'
'【訂閱】及觀看洋蔥更多影片: https://goo.gl/ijP3Eb\n'
'\n'
'工作合作:service@weido.biz\n'
'Onion Man 百萬追蹤粉絲團:goo.gl/Z5CSvw\n'
'\n'
'最新阿文貼圖:https://reurl.cc/GxYjA\n'
'\n'
'第一代阿文line貼圖:https://reurl.cc/Wroxx\n'
'\n'
'洋蔥私生活IG:https://www.instagram.com/onionman__/\n'
'\n'
'\n'
'運動漫畫裡的中二老梗劇情\n'
'►第一集:https://youtu.be/cMoV1rPH35k\n'
'►第二集:https://youtu.be/iW7LM00lny0\n'
'►第三集:https://youtu.be/2G5wu61uCM0\n'
'►第四集:https://youtu.be/-rP1abYv8n4\n'
'\n'
'Onion Man 關鍵字:\n'
'中二 肥宅 單身漢 單身 魯蛇 屌絲 肥宅',
'標籤': ['onion', 'man', '阿文', '黑鳳梨', '插畫', '爆笑', '搞笑', '玩笑',...'綜藝大熱門', 'de', 'jun', '上班不要看'],
'標題': 'Onion Man | 我不想出錢 但要裝闊',
'留言數': None,
'網頁網址': 'https://www.youtube.com/watch?v=YculJhe_iPk',
'觀看次數': 555986}
|
* 我發現它 YouTube 好像無法取得留言數。🤔
但它是需要透過影片網址來取得影片相關資訊,如果我們想要像上次一樣,針對某個頻道抓取最近的五部影片,可能就要先透過網路爬蟲取得網頁的方式來獲取影片網址,才可以使用了 youtube_dl 套件。
完整程式碼
附上完整程式碼:youtube_dl.py
(對超連結右鍵 > 另存連結為)
延伸練習
在上方教學中,我們是透過影片網址取得影片資訊。
那你可以寫支程式自動抓取發燒影片的前10名影片資訊嗎?
youtube_dl 套件最主要是用來從 YouTube 及其他多個網站下載影片,你何不來嘗試看看呢?
結語
如果你只是想取得影片的基本資訊,使用 youtube_dl 套件會比較容易哦~
我有陸續寫一些網站的Python網路爬蟲實例,如果你正好是剛開始想學爬蟲的新手、想知道某個網站如何爬取資料,或者遇到其他問題,歡迎過來參考和在底下留言~👇
參考:
youtube-dl GitHub
有夢就去追啊,愣在原地做什麽。
🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~