社群經營必備!好奇自己FB的互動性指標嗎?!用Selenium爬蟲搞定貼文按讚數、留言數、分享數(附Python程式碼)


 

歡迎來到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) 可以看到以下視窗 (圖一)

網頁檢視器 (Windows系統:請按 f12、macOS系統:請按option+command+c) 可以看到以下視窗
圖一、網頁檢視器畫面 (資料畫面來源:https://www.facebook.com/bbcnews)

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

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

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

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

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

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

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

回到頂端