社群經營必備!好奇自己FB的互動性指標嗎?!用Selenium爬蟲搞定貼文按讚數、留言數、分享數(附Python程式碼)
歡迎來到Selenium Facebook爬蟲系列的第二篇文章!
現代人的生活型態,幾乎離不開3C產品~
而FB或是IG幾乎是數位時代下每個人日常的一部分。有的人用來記錄每天發生的趣事、和好友們互相分享生活點滴,有的人用來經營個人品牌,有的人用來作為同好的交流社群!
也因為趨勢潮流的帶動,讓社群媒體成為了新的資訊集結及傳遞的重要工具,也成了數據時代下,大家都想探究、挖掘、開發的新天地。
外行看熱鬧,內行看門道。本系列文章,將帶您用數據思維的角度來看FB這塊數據寶地背後隱涵消費行為。
此篇我們將從將最簡單也最基礎的部分入門著手。請跟著我從爬取FB粉絲專頁每篇貼文的「按讚數」、「留言」及「分享數」開始吧!
前情提要
上一篇文章講解到開啟chromedriver及登入facebook的方法,今天我們也會建構在這個基礎上,繼續探討selenium的神奇奧秘!
若還不了解上述內容的話可以參考以下文章
想知道chromedriver的強大請參考:
Selenium必備技能 — 網頁檢視器概念說明
要爬取一個網頁的資料,必須從檢視網頁內容開始! 相信已經閱讀過其他篇Selenium爬蟲系列的文章的朋友們,應該已經對網頁檢視器很熟悉了吧!
如果還不太了解的話,沒!關!係! 我來快速為各位講解一下,只要依循以下的步驟實際操作,就能夠簡單找到想要的網頁資料喔!
1. 請大家打開網頁檢視器 (Windows系統:請按 f12、macOS系統:請按option+command+c) 可以看到以下視窗 (圖一)
2. 點選視窗上方的Elements (圖二),檢視網頁元素
3. 點選Elements左邊的箭頭 (圖三)
4. 將移動鼠標移動到網頁中任意的區塊做點擊,即可得到鼠標對應區塊的網頁元素! (影一)
抓取文章框架
在抓取貼文按讚數、留言數、分享數前,如果我們能夠一次抓到粉絲專頁內多篇貼文的網頁元素,就能夠使用for迴圈把所需的內容一次抓下來,簡單又快速! 因此我們將所有貼文先爬取下來。
— — — — — — — — — — — — — — —
*注意事項:
因為facebook是一個動態網頁,必須滾動滾輪才會有更多貼文的出現,因此可以先使用Javascript 中的window.scrollTo()讓程式自動幫你下拉滾輪,直到所需的貼文都出現後,就可以停止下拉的動作了! (請參考以下程式碼)
程式執行展示影片如下 (影二)
— — — — — — — — — — — — — — —
1. 下拉完滾論後,移動滑鼠箭頭至第一篇貼文 (圖四)
2. 就可以找到第一篇貼文的class name 是 ‘du4w35lb k4urcfbm l9j0dhe7 sjgh65i0’ (圖五)
3. 接著就可以發現每一篇貼文的class name都是一樣! 如下圖中每一個紅色框框都是代表一篇貼文 (圖六)
6. 使用BeautifulSoup套件,把我們剛剛找到的class name放進 find_all() function裡面,並執行以下程式碼,即可把全部貼文內容都抓取下來囉!
*BeautifulSoup補充說明:
find_all() 為抓取所有符合此class name的元素內容
find() 為抓取第一個符合此class name的元素內容
抓取按讚數
- 首先,我們的目標是把第一篇貼文的按讚數抓取下來,使用網頁檢視器點選第一篇貼文的按讚數,即可找到對應的網頁元素 (圖七)
2. 找到按讚數的 class name,但要注意的是,這個 class name 前面還有一個span 標籤 (圖八)
3. 我們一樣使用BeautifulSoup套件,把我們剛剛找到的 span 標籤及class name ‘gpro0wi8 pcp91wgn’ 放進 find() 裡面,請參考以下程式碼 (因為我們現在只要抓取按讚數一個class name 的內容,所以使用 find() function)
4. 成功抓取第一篇貼文後,接下來我們使用for迴圈,把所有貼文的按讚數儲存在一個list裡面,請參考以下程式碼
5. 但是會發現程式執行完後,抓下來的數值格式不太統一 (圖九)
6. 因此我們要進行資料整理,請參考以下程式碼
抓取留言數
抓取留言數的方法和按讚數大同小異,以下會再簡單的做介紹!
- 如同按讚數,第一步是使用網頁檢視器找出留言數的網頁元素 (圖十一)
2. 留言數的class name就是下面這一大~串,記得還有下面的 span 標籤喔! (圖十二)
3. 一樣使用BeautifulSoup套件,把我們剛剛找到的 span 標籤及class name 放進 find() 裡面,抓取第一篇貼文的留言數,請參考以下程式碼
抓取分享數
抓取分享數的方式與留言數又更相似了,因此我們仿照前面的方法,快速的講解一下抓取的方式,那我們就繼續看下去吧~
- 萬年不變的第一步,使用網頁檢視器點選分享數找出網頁元素! (圖十五)
2. 又是萬年不變的第二步,找出分享數的 class name,另外還要注意什麼?? 沒錯! 就是 span 標籤 (圖十六)
3. 但是如果仔細看看可以發現,留言數和分享數的 class name 好像一樣欸! (圖十七 、圖十八)
4. 因此我們先執行第一篇貼文的 find_all() function,並把此class name放進去,看看會得到什麼結果?
喔喔喔! 留言數和分享數竟然一起出現了 (圖十九)
5. 那要怎麼取出分享數呢? 因為分享數是第二個出現的,所以只要在整串 find_all() 後面再加上 [1] 就可以抓到分享數了喔,請參考以下程式碼,執行完後即可取出第一篇貼文的分享數了!
6. 成功取出第一篇貼文的分享數後,那我們一樣使用for迴圈,把所有貼文的分享數儲存在一個list裡面,請參考以下程式碼
7. 並使用以下的程式碼進行資料整理!
8. 程式執行完後那我們就來看整理前 (圖二十)及整理後 (圖二十一)的成果吧
以上就是FB貼文按讚數、留言數及分享數爬蟲的全部介紹!但是要注意! 因為每個網頁都會定期維護,所以 class name 要定期偵錯喔!
學會了這幾招,就可以從自己的FB開始,試著爬取按讚數、留言數、分享數,或者也可以分析您自身經營的社群。可以初步比較那些種類的貼文其粉絲互動性指標是較高的,指標間的有無明顯的差異變化,再延伸應用至貼文類型發放選擇、貼文效益評估管理等。
本文完整程式碼在此
謝謝大家看完這篇陋陋ㄉㄥˊ的文章,希望能讓大家體會到爬蟲的神奇奧秘!
那我們就下次見啦,掰掰~
作者:許喬雅(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
更多實戰案例及情境好文推薦
Gamma 其他實用功能(目錄、動畫、共編)
Gamma 其他實用功能(目錄、動畫、共編) 一、導言 在前述的單元,筆者介紹完Gamma的各大功能,如何幫助我們解決素材搜尋、物件對齊、整
想要學習Python程式語言,卻找不到一個好用的操作介面嗎?
想要學習Python程式語言,卻找不到一個好用的操作介面嗎? 相信大多數 Python 的初學者們都曾為環境問題而頭疼不已,但,你並不孤獨,
透過機器學習預測股市漲跌-模型建模(附 Python 程式碼)
透過機器學習預測股市漲跌-模型建模(附 Python 程式碼) 點此回顧 _透過機器學習預測股市漲跌-進階資料處理 前情提要 在第一篇系列文