跟著IG潮流來爬蟲 - 
如何爬取IG貼文讚數&留言數 (附Python程式碼)

歡迎回到 Selenium 動態網頁爬蟲系列文章,本篇文章要和大家分享如何進一步使用 Selenium 爬取 Instagram 貼文讚數&留言數~

更多IG爬蟲系列文章看這裡~
跟著IG潮流來爬蟲-用Selenium帶您自動登入 IG -(附Python程式碼)
跟著IG潮流來爬蟲 — 如何爬取IG貼文短連結 — (附Python程式碼)

(資料畫面來源:https://www.instagram.com/p/CE_vJOwMUZR/)

為何要爬 Instagram 貼文的讚數與留言數呢?

  Instagram 中有許多大大小小的粉絲專頁,在他們發佈的貼文中讚數與留言數一直是行銷人拿來衡量的指數,從中可以了解這些粉絲專頁的經營狀況以及成長趨勢。

接下來,我們就開始教各位如何獲取這些資料吧!!

網頁檢視器概念說明

  以 bbcnews 的粉絲專頁為例,https://www.instagram.com/bbcnews/,我們打開網頁檢視器 (Windows 系統:請按 F12;MacOS 系統:option+command+c) ,可以看到以下視窗,如圖一

圖一、網頁檢視器(資料畫面來源:https://www.instagram.com/bbcnews/)

  之後點選彈出視窗上方的 Elements,檢視網頁,如圖二所示。

1*2jDvz9LPWZ8FH6IfmJPOEQ
圖二、點擊網頁元素選項(資料畫面來源:https://www.instagram.com/bbcnews/)

  之後再點選旁邊的小鼠標,這時當我們任意的在網頁上滑動,旁邊的灰色網底區塊應該也會跟著移動,如圖三

1*9TyqZdfsZoXXy4ez2MGKcQ
圖三、檢測元素的鼠標(資料畫面來源:https://www.instagram.com/bbcnews/)

  若將鼠標移到網站中的任意區塊做點擊,它就會自動幫我們找到鼠標對應區塊的網頁元素!

尋找

  由於我們是要爬取 Instagram 的「貼文讚數」與「留言數」,若您很熟悉 Instagram 的介面,應該很輕易就能找到他們所在的位置,如圖四所示,只要將滑鼠移到貼文上方,目標很快地就出現在眼前了!

1*5hxHJfKtKQeqAoDYl62SYw
圖四、有些貼文為影片或IGTV,會出現觀看次數,但是不會影響抓取內容以及後續分析(資料畫面來源:https://www.instagram.com/bbcnews/)

  接下來,您就可以使用剛剛提到的小鼠標功能,將鼠標移至貼文上方點擊,就可以得到貼文區塊的元素,如圖五。

1*GowyEj2ibZMc08dpvP0M_A
圖五、取得貼文的網頁元素(資料畫面來源:https://www.instagram.com/bbcnews/)

  但是這時候會發現,想要的讚數跟貼文數的網頁元素怎麼都找不到呢?
  動動您手上的滑鼠,就會發現只要將滑鼠移到貼文上方就會顯現出來了!如動畫一所示。

1*CH3plfhqJZ6szb3sY0AvDg
動畫一、滑鼠移到貼文上方才能找到其元素(資料畫面來源:https://www.instagram.com/bbcnews/)

但,您可能心中會有個疑問 :

可是我沒有兩隻滑鼠可以用啊!
那我們應該如何才能找到它們的元素呢?

  這時候就會使用 Selenium 裡面模擬滑鼠操作的功能 — ActionChains

  我們使用 ActionChains 的技巧將「模擬的」滑鼠移到貼文的位置,就會發現一個包含class = "qn-0x"的標籤顯現出來了!

  這時要小心翼翼地控制自己的滑鼠,在不能滑到 Instagram 頁面的前提下,從剛才顯示出來的標籤,將旁邊的箭頭一一往下點,就可以在如圖六紅框中找出讚數及貼文數隱藏的位置囉!

1*kiMBFN7LJp3H83DxWfMtxg
圖六、讚數及貼文數的所在位置(資料畫面來源:https://www.instagram.com/bbcnews/)

  找出想要的資訊之後,就可以進入程式操作的部分囉~

  開始之前,我們先打開 Python3 編輯器和 Chromedriver

若想知道 Chromedriver 是如何運作的,請點以下連結~

  1. 動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)
  2. 動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得網頁元素(附Python 程式碼)

如何透過 Selenium登入 Instagram請見此

  完成開啟 Chromedriver 並登入之後,就可以開始執行以下的程序了

開始爬取貼文讚數及留言數

  首先我們將需要用到的套件import進來,如程式碼 1

截圖 2022-05-14 上午4.29.17
程式碼 1

  接下來我們進入到粉專的頁面,如程式碼 2

截圖 2022-05-14 上午4.31.02
程式碼 2
截圖 2022-05-14 上午4.31.58
程式碼 3

以上程式碼解析

  接下來為各位做以上程式碼的解析:

  1. 前往特定貼文頁面,如下程式碼。

url = 'https://www.instagram.com/bbcnews/'
browser.get(url) # 前往該網址

  url指的就是您需要爬取資料的網頁連結,使用 browser.get(url)可以使 webdriver 前往對應的網頁,之後爬取需要的資料。

  2. 將鼠標移至想要爬取的貼文上,如下程式碼。

post_url = '/p/CEriQnOMwW9/'
# 找到對應的貼文,鼠標移入
post_elem = browser.find_element_by_xpath('//a[@href="'+str(post_url)+'"]')
action = ActionChains(browser) action.move_to_element(post_elem).perform()

  這裡的 post_url 就是想要爬取的貼文短連結,這個部分可以自行做更改,(短連結形式請依照:‘ /p/貼文編號/ ’)

想要了解貼文短連結如何直接透過 Selenium 爬取的朋友們可以參考此文章
跟著IG潮流來爬蟲 — 如何爬取IG貼文短連結 — 系列2(附Python程式碼)

  接下來我們找出該篇貼文的元素 (post_elem),這邊就要使用 Selenium 查找元素的方法:browser.find_element_by_xpath()
  再透過 ActionChains 的鼠標控制將鼠標移動到貼文上方,讓讚數及留言數的元素能夠被抓出來。

  3. 找出讚數及留言數的元素

# 找到需要的網頁元素
n_like_elem = browser.find_elements_by_class_name('-V_eO')
# 取得讚數、留言數
n_like = n_like_elem[0].text
n_comment = n_like_elem[1].text

這時我們再回到網頁元素的地方來觀察,要從哪裡來抓取讚數與貼文數的內容呢?

1*g0wrErZwsGNjQkUs8upwZg
圖七、讚數與貼文數的網頁元素

  從圖七中可以發現它們的內容都一樣被包含在class = "-V_e0"的標籤底下,那我們就可以輕鬆的一次把它們全部抓下來~

目前為止需要的東西已經到手了,但…還沒完!
如果現在 browser 的畫面中看不到欲爬取的那篇貼文,電腦也是找不到的喔~

Instagram 是一個動態加載的網頁,這就是為何我們必需使用 Selenium 來爬取的用意

  那麼,我們應該怎麼解決呢?

find = False
# 不在目前的網頁元素裡,則往下滑,加載新貼文
while not find:
try:
----------------------
取得讚數及留言數的程式內容
----------------------
# 找到之後就可以回傳‘找到了’
find = True
except:
# 找不到就往下滑
scroll = 'window.scrollBy(0,250)'
browser.execute_script(scroll)
continue

這時,可以用一個「while迴圈」來重複嘗試抓取的動作,如果找不到貼文的所在位置的話,就將頁面往下滑。

而下滑的方式我們使用 Javascript 中的 window.scrollBy(),
每找一次都將頁面下滑 250 個像數。

直到找到了就回傳 find = True,電腦就知道「哦~您找到了!」
它就會停止再繼續做下滑的動作。

以上就是爬取 Instagram 貼文讚數與留言數的完整技巧了,
本篇完整的程式碼在此分享給您,讓您也可以增強爬蟲功力~
如果喜歡我的文章,記得幫我拍個手!!

  更多Selenium相關文章連結:

  1. FB 爬蟲可以更簡單-用Selenium自動登入FB-系列1(附Python程式碼)
  2. 好奇自己FB的互動性指標嗎?!用Selenium爬蟲-搞定貼文按讚數、留言數、分享數-系列2(附Python程式碼)
  3. 用Selenium爬蟲-抓取FB文章內容、時間-系列3(附Python程式碼)
  4. 跟著IG潮流來爬蟲-用Selenium帶您自動登入 IG -系列1(附Python程式碼)
  5. 跟著IG潮流來爬蟲 — 如何爬取IG貼文短連結 — 系列2(附Python程式碼)

作者:黃鈺淇(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

更多實戰案例及情境好文推薦

回到頂端