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

行銷資料科學
12 min readOct 29, 2020

--

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

更多IG爬蟲系列文章看這裡~
跟著IG潮流來爬蟲-用Selenium帶您自動登入 IG -系列1(附Python程式碼)跟著IG潮流來爬蟲 — 如何爬取IG貼文短連結 — 系列2(附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,檢視網頁,如圖二所示。

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

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

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

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

尋找

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

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

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

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

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

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

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

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

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

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

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

圖六、讚數及貼文數的所在位置(資料畫面來源: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

程式碼 1

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

程式碼 2

最後執行底下的程式碼 3 就可以找到貼文的讚數及留言數啦~

程式碼 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

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

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

圖七中可以發現它們的內容都一樣被包含在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程式碼)

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

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

您可能有興趣:

📢TMR全新線上直播課程

【直播Workshop-線上實戰講堂】
《用AI進行顧客資料分析與銷售判斷》

🔹直播日期:11/07(六)
🔹直播時間:14:00–17:00
🔹課程詳情:https://bit.ly/2RHOwT6

【課程簡介】
📌Python技法結合商業思維,一步步建立數值化思考能力
📌機器學習分析顧客行為,找出最佳獲利模式
📌輿情數據結合STP策略,洞察潛在藍海市場
📌專業講師實案講解,帶您快速落地應用

💥早鳥價 :$550(7折)
💥兩人以上同行:$500(64折)
(原價:$780)
🏃‍♂前往報名:https://bit.ly/2RHOwT6

— — — — — — — — — — — — — —

👨‍🎓TMR為您量身打造「全方位數據課程」

熱門Python程式語言結合全新商業思維,快來終生學習不間斷!

【TMR】 X 【 好學校】
👨‍💼Python商業全系列數位課程👨‍💼

#行銷人必學實用Python課程

《 Python 0到1 基礎商業數據分析實戰 》
💥 價格 :3188
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 前往購買:https://hahow.in/cr/python0-1

《 顧客分類大師:Python x RFM 會員經營新觀點 》
💥 價格 :2388

🎯 Python X RFM最佳拍檔,輕鬆鎖定潛(錢)在顧客
不需要出門,在家也能學習專業課程,讓你擁有會員經營的新思維!

本課程以五個面向為您的企業,做更深入的健診:
👉 市場面:以最基本的顧客消費資料(頻率、購買次數),將現有顧客區隔分類。
👉 財務面:計算出在每個顧客身上所賺得毛利,在不同客群中的獲利。
👉 行銷面:藉由 RFM 的分析進行行銷預算重新分配。
👉 產品面:觀察在不同客群中,各個產品的銷售狀況。
👉 顧客回購面:分析顧客的購買週期後,進行精準推薦。
🛒 前往購買:https://hahow.in/cr/rfm-model

《 AI 行銷學:用 Python 機器學習創造商業新價值 》
💥 價格 :3888
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 前往購買:https://hahow.in/cr/python-ml

--

--

行銷資料科學
行銷資料科學

Written by 行銷資料科學

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

No responses yet