好奇自己FB的互動性指標嗎?!用Selenium爬蟲-搞定貼文按讚數、留言數、分享數-系列2(附Python程式碼)

chiaoya 許喬雅
Marketingdatascience
14 min readOct 9, 2020

歡迎來到Selenium Facebook爬蟲系列的第二篇文章!

現代人的生活型態,幾乎離不開3C產品~
而FB或是IG幾乎是數位時代下每個人日常的一部分。有的人用來記錄每天發生的趣事、和好友們互相分享生活點滴,有的人用來經營個人品牌,有的人用來作為同好的交流社群!
也因為趨勢潮流的帶動,讓社群媒體成為了新的資訊集結及傳遞的重要工具,也成了數據時代下,大家都想探究、挖掘、開發的新天地。

外行看熱鬧,內行看門道。本系列文章,將帶您用數據思維的角度來看FB這塊數據寶地背後隱涵消費行為。

此篇我們將從將最簡單也最基礎的部分入門著手。請跟著我從爬取FB粉絲專頁每篇貼文的「按讚數」、「留言」及「分享數」開始吧!

前情提要

上一篇文章講解到開啟chromedriver及登入facebook的方法,今天我們也會建構在這個基礎上,繼續探討selenium的神奇奧秘!

若還不了解上述內容的話可以參考以下文章
想知道chromedriver的強大請參考:

  1. 動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)
  2. 動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得網頁元素(附Python 程式碼)
  3. 想知道如何透過 selenium登入facebook請參考:FB 爬蟲可以更簡單-用Selenium自動登入FB-系列1(附Python程式碼)

Selenium必備技能 — 網頁檢視器概念說明

要爬取一個網頁的資料,必須從檢視網頁內容開始! 相信已經閱讀過其他篇Selenium爬蟲系列的文章的朋友們,應該已經對網頁檢視器很熟悉了吧!
如果還不太了解的話,沒!關!係! 我來快速為各位講解一下,只要依循以下的步驟實際操作,就能夠簡單找到想要的網頁資料喔!

1. 請大家打開網頁檢視器 (Windows系統:請按 f12、macOS系統:請按option+command+c) 可以看到以下視窗 (圖一)

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

2. 點選視窗上方的Elements (圖二),檢視網頁元素

圖二、點選視窗上方的Elements

3. 點選Elements左邊的箭頭 (圖三)

圖三、點選箭頭

4. 將移動鼠標移動到網頁中任意的區塊做點擊,即可得到鼠標對應區塊的網頁元素! (影一)

影一、尋找網頁元素 (資料畫面來源:https://www.facebook.com/bbcnews)

抓取文章框架

在抓取貼文按讚數、留言數、分享數前,如果我們能夠一次抓到粉絲專頁內多篇貼文的網頁元素,就能夠使用for迴圈把所需的內容一次抓下來,簡單又快速! 因此我們將所有貼文先爬取下來。

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

*注意事項:
因為facebook是一個動態網頁,必須滾動滾輪才會有更多貼文的出現,因此可以先使用Javascript 中的window.scrollTo()讓程式自動幫你下拉滾輪,直到所需的貼文都出現後,就可以停止下拉的動作了! (請參考以下程式碼)

程式執行展示影片如下 (影二)

影二、下拉頁面 (資料畫面來源:https://www.facebook.com/bbcnews)

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

1. 下拉完滾論後,移動滑鼠箭頭至第一篇貼文 (圖四)

圖四、移動滑鼠箭頭至文章框架 (資料畫面來源:https://www.facebook.com/bbcnews)

2. 就可以找到第一篇貼文的class name 是 'du4w35lb k4urcfbm l9j0dhe7 sjgh65i0' (圖五)

圖五、貼文的class name (資料畫面來源:https://www.facebook.com/bbcnews)

3. 接著就可以發現每一篇貼文的class name都是一樣! 如下圖中每一個紅色框框都是代表一篇貼文 (圖六)

圖六、多篇貼文的class name (資料畫面來源:https://www.facebook.com/bbcnews)

6. 使用BeautifulSoup套件,把我們剛剛找到的class name放進 find_all() function裡面,並執行以下程式碼,即可把全部貼文內容都抓取下來囉!

*BeautifulSoup補充說明:
find_all() 為抓取所有符合此class name的元素內容
find() 為抓取第一個符合此class name的元素內容

抓取按讚數

  1. 首先,我們的目標是把第一篇貼文的按讚數抓取下來,使用網頁檢視器點選第一篇貼文的按讚數,即可找到對應的網頁元素 (圖七)
圖七、點選按讚數 (資料畫面來源:https://www.facebook.com/bbcnews)

2. 找到按讚數的 class name,但要注意的是,這個 class name 前面還有一個span 標籤 (圖八)

圖八、按讚數class name

3. 我們一樣使用BeautifulSoup套件,把我們剛剛找到的 span 標籤及class name 'gpro0wi8 pcp91wgn' 放進 find() 裡面,請參考以下程式碼 (因為我們現在只要抓取按讚數一個class name 的內容,所以使用 find() function)

4. 成功抓取第一篇貼文後,接下來我們使用for迴圈,把所有貼文的按讚數儲存在一個list裡面,請參考以下程式碼

5. 但是會發現程式執行完後,抓下來的數值格式不太統一 (圖九)

圖九、清理前的 like list

6. 因此我們要進行資料整理,請參考以下程式碼

7. 程式執行完後,數值就會變得美觀又整齊了喔! (圖十)

圖十、清理後的 like list

抓取留言數

抓取留言數的方法和按讚數大同小異,以下會再簡單的做介紹!

  1. 如同按讚數,第一步是使用網頁檢視器找出留言數的網頁元素 (圖十一)
圖十一、點選留言數 (資料畫面來源:https://www.facebook.com/bbcnews)

2. 留言數的class name就是下面這一大~串,記得還有下面的 span 標籤喔! (圖十二)

圖十二、留言數的class name

3. 一樣使用BeautifulSoup套件,把我們剛剛找到的 span 標籤及class name 放進 find() 裡面,抓取第一篇貼文的留言數,請參考以下程式碼

4. 成功抓取第一篇貼文後,接下來我們使用for迴圈,把所有貼文的留言數儲存在一個list裡面,請參考以下程式碼

5. 但也會發現程式執行後,抓下來的數值格式不太統一,因此使用下方的程式碼進行資料整理

6. 以下分別是整理前 (圖十三)及整理後 (圖十四)的成果

抓取分享數

抓取分享數的方式與留言數又更相似了,因此我們仿照前面的方法,快速的講解一下抓取的方式,那我們就繼續看下去吧~

  1. 萬年不變的第一步,使用網頁檢視器點選分享數找出網頁元素! (圖十五)
圖十五、點選分享數 (資料畫面來源:https://www.facebook.com/bbcnews)

2. 又是萬年不變的第二步,找出分享數的 class name,另外還要注意什麼?? 沒錯! 就是 span 標籤 (圖十六)

圖十六、分享數的class name

3. 但是如果仔細看看可以發現,留言數和分享數的 class name 好像一樣欸! (圖十七圖十八)

4. 因此我們先執行第一篇貼文的 find_all() function,並把此class name放進去,看看會得到什麼結果?
喔喔喔! 留言數和分享數竟然一起出現了 (圖十九)

圖十九、class name 放進去 find_all() function

5. 那要怎麼取出分享數呢? 因為分享數是第二個出現的,所以只要在整串 find_all() 後面再加上 [1] 就可以抓到分享數了喔,請參考以下程式碼,執行完後即可取出第一篇貼文的分享數了!

6. 成功取出第一篇貼文的分享數後,那我們一樣使用for迴圈,把所有貼文的分享數儲存在一個list裡面,請參考以下程式碼

7. 並使用以下的程式碼進行資料整理!

8. 程式執行完後那我們就來看整理前 (圖二十)及整理後 (圖二十一)的成果吧

以上就是FB貼文按讚數、留言數及分享數爬蟲的全部介紹!但是要注意! 因為每個網頁都會定期維護,所以 class name 要定期偵錯喔!

學會了這幾招,就可以從自己的FB開始,試著爬取按讚數、留言數、分享數,或者也可以分析您自身經營的社群。可以初步比較那些種類的貼文其粉絲互動性指標是較高的,指標間的有無明顯的差異變化,再延伸應用至貼文類型發放選擇、貼文效益評估管理等。

本文完整程式碼在此
謝謝大家看完這篇陋陋ㄉㄥˊ的文章,希望能讓大家體會到爬蟲的神奇奧秘!
那我們就下次見啦,掰掰~

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

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

您可能有興趣:

📢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

#實用投資分析課程

《 用 Python 打造自己的股票小秘書 》
💥 價格 :4288
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 前往購買:https://hahow.in/cr/stock-secretary

#好學校企業百大課程之一:

台科 EMBA 年年爆滿的一門 Word 課(A系列)
💥 價格 :950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 前往購買:https://hahow.in/cr/tmr-word1

台科 EMBA 年年爆滿的一門 Word 課(B+C系列)
💥 價格 :1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 前往購買:https://hahow.in/cr/tmr-word2

— — — — — — — — — — — — — — — — -

【TMR】 X 【工研院】
🏭工業4.0大數據智慧應用課程🏭

《Python工業4.0人工智慧:製程資料處理大師》

製程數據資料 X 資料科學,
為您開啟工業人工智慧領域的大門!
👉全球前十大智慧製程案例實戰
👉專業講師手把手帶您入門製程資料處理分析
👉課後完整模組心法讓您通通帶回家

💥價格 : 2,800
🏃趕緊手刀前往購買:https://bit.ly/39koNbn

— — — — — — — — — — — — — — — — -

2020課程地圖

💪 點我看更多

🏆 國內第一本行銷資料科學專書

💪 點我看書本資訊

🏆 國內第一本行銷資料科學 ” 實作 ” 專書

💪 點我看書本資訊

🏆國內第一本「股票小祕書」專書

附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!

  1. 天瓏書局:http://bit.ly/stock-secretaryBot
  2. 博客來:https://www.books.com.tw/products/0010833772

--

--