Google Map Review 動態爬蟲:如何獲取店家評論內容、圖片以及篩選評論(附Python程式碼)
歡迎回到 Google map review動態網頁爬蟲系列文章~
本篇會帶領各位使用Selenium方法爬取GOOGLE MAP REVIEW的評論資料,例如:評論者、圖片、星級等等,並講解如何選擇評論顯示順序(相關性、時間順序)、選取不同關鍵字進行評論篩選等等!希望各位能收穫滿滿!
若已了解相關概念,可以直接往下滑到最後觀看實作程式碼~
動態網頁爬蟲一切的開始都是從網頁檢視器,觀察觀察再觀察!
更多動態網頁爬蟲相關文章:
《本文架構》
- 獲取單一評論網頁架構
- 取得評論內容(評論者名稱、評論次數、星評、評論時間、評論文字內容)
- 獲取評論圖片連結
- 選擇評論排序方法
- 點選關鍵字篩選評論
獲取單一評論網頁架構
在爬取評論資料時,我們同樣要先來破解一下網頁架構,幸好Google的架構比起Instagram及Facebook好閱讀的多,classname也有意義能直接閱讀,爬蟲相對的也簡單許多。
首先,我們找到包含單一評論所有需要的資料的框架,也就是classname為「section-review ripple-container GLOBAL__gm2-body-2」的內容,如圖一所示。我們可以使用 beautifulsoup 的 find_all() 函式輕鬆的把所有目前已加載的評論資料抓下來,並將爬取下來的各個評論儲存在列表(List)裡。
解決評論動態加載的問題請看此:Google Map Review 動態爬蟲:如何解決評論動態加載的問題以及在不同視窗間跳轉、滑動
程式碼如下:
之後的內容,我將以第一篇評論為例進行解說。
取得評論內容
接下來就到重頭戲了!就像我一直強調的「看得到的就爬得下來!」,我們要一個一個找到我們需要的內容,並用Selenium的各種方法爬下來。
首先是評論者名稱,使用網頁檢視器點選想要檢視的元素,找到其classname或id,可以使用beautifulsoup或是Selenium的方法來獲取內容,如圖二所示。找到在classname為「section-review-title」的框架下,含有評論者名稱的文字內容,使用find()的方法並搭配.text的屬性,即可輕鬆地抓出評論者名稱。
程式碼如下:
大家爬取下來後,必定會將評論資料儲存為各種形式的資料,並做進階運用及後續分析,所以我不在此講述資料整理的方式了,大家可以彈性運用~
之後獲取評論者稱號、評論次數、星評、評論時間、評論文字內容的方法都大同小異,這裡就不囉嗦的直接提供大家部分程式碼,給大家自行使用~
程式碼如下:
獲取評論圖片連結
接下來,比較困難的是含有圖片的評論,如果要獲取圖片,方法會複雜一些。在Google Map Review的網頁機制裡,超過四張圖片以上的評論會收合,所以在獲取資料之前,我們必須先將按鈕點開(classname為「section-review-photo」),使單一評論的圖片內容完全展開,如圖三所示。
同樣使用網頁檢視器,可以很快的發現,classname為「section-review-photo」的按鈕即是我們需要的目標!
程式碼如下:
這裡使用一個簡單的for迴圈將所有評論圖片依次展開,並找到框架內所有的評論連結,將其放入另一個列表(List)裡。
以上是關於評論資料的獲取,下一部分我將講解如何選擇排序方法,以及如何點選關鍵字篩選評論。
選擇評論排序方法
利用Google Map Review的選單機制,點選評論視窗中間的「排序」按鈕,我們可以依照「最相關」、「最新」、「評論最高」及「評論最低」來進行排序,如圖四所示。
程式碼如下:
點選關鍵字篩選評論
同樣在所有評論的上方,有數個關鍵字的按鈕可以點選,如圖五所示。而使用webdriver點選關鍵字的篩選方法,跟上面講解的選擇評論排序方法是大同小異,其原理也是一樣的。Google Map Review預設會顯示出全部的評論,點選特定關鍵字之後,網頁就會只顯示相關評論了!
程式碼如下:
以上就是本文關於爬取Google map評論資料的內容了,感謝大家的閱讀。
如果你喜歡我的文章,請給我一點掌聲。
更多動態網頁爬蟲相關文章:
作者:戴若竹(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
— — — — — — — — — — — — — — — —
往後的文章都會持續在行銷資料科學粉絲專頁上發表喔,喜歡我們就趕緊追蹤吧!
同時再請大家多多follow我們的FB粉絲專頁,我們會在粉專上即時公布最新資訊,讓您重要消息不漏接!
◼ FB粉絲專頁:行銷資料科學
◼ 官網:臺灣行銷研究