第三章 研究方法與設計
第一節 研究方法
本研究旨在透過 Facebook 粉絲專頁中的使用者互動資料,建構快速分析該 粉絲專頁中粉絲的角色組成,本研究以撈取台灣政治人物的粉絲團專頁為例,
利用建置詞彙列表的方式分析回饋民眾的角色。詞彙列表的效能評估部分為比 對受試者標記的結果,如詞彙列表的結果與受試者標記的結果相符,則判斷為 詞彙列表判斷正確;如不同,則判斷為詞彙列表判斷錯誤。本研究使用
Python2.7、Facebook Graph API 進行粉絲專頁的資料抓取、清理與分析;利用 MySQL 建置資料庫;利用 Django 與其附帶的 Sqlite 資料庫建立使用者互動介 面,並與 MySQL 進行串接以查找資料。以下依序介紹本研究所使用之工具。
一、 Facebook 圖形 API
根據 Facebook 的官方說明,Facebook 圖形 API 為 Facebook 在 Facebook 平 台存取和輸出資料的主要方法,可以讓使用者以程式設計方式來查詢資料、發 佈新動態、管理廣告、上傳相片以及執行各種應用程式可能實作的工作。其 中,圖形 API 是以社交關係圖的想法命名的,在社交關係圖中,會有節點、關 係連線與欄位,如同在粉絲專頁中,可以把每一個粉絲當作一個節點,粉絲跟 粉絲之間的關係為共同對同一篇貼文留言或是進行情緒表達的回饋。
本研究透過 Facebook 圖形 API 去撈取粉絲頁面的資料。在撈取之前,必須 先取得 API 的金鑰,才能進行撈取。其介面如圖三-1 所示,可以輸入粉絲頁面 的 id,選取想要下載的欄位,例如下圖是選取「post」、在「post」中的
資料就會在右方的藍色框框中呈現。預設每一次抓取的筆數為 25 筆。之後可透 過下方的「Get Code」獲取資料網址,並結合 Python 的爬蟲程式抓取資料。本 論文共撈取了粉絲頁面之貼文、貼文之下的留言與情緒反應項目,抓取方式 為,先抓取一粉絲頁面的所有貼文,在篩選出 2015 年 1 月 1 日至 2017 年 1 月 31 日間的貼文 id,在用此貼文 id 去爬取粉絲留言與該貼文的情緒反應。值得注 意的是,當留言內容為貼文或是圖片,撈取下來之資料為空值,因此本論文將 不予以分析,但會納入留言次數中。撈取的欄位如表三-1 所示:
圖 三-1 Facebook Graph API 介面示意 表 三-1 本研究撈取項目與屬性列表
撈取項目 貼文 留言
撈取屬性 貼文id 留言id 貼文時間 留言時間 貼文連結 留言者id 分享數 留言者姓名
留言獲得留言數
留言獲得讚數
二、 Python2.7
Python 為一動態的開源程式語言,其特性為優雅與簡潔,常被用在處理資 料分析上,也可用在網頁開發上。本論文用 Python2.7,為在 2010 年 7 月 3 號發 佈的 Python 版本,並結合 Facebook Graph API 進行資料爬取、再利用 Python 進 行資料分析 MySQL 存放資料與結合 Django 進行架設實驗網站。
三、 Django
Django 是使用 MTV(model, template, view)結構的網站框架,可用 Python 為腳本,串接前後端介面與資料庫,主要架構包含串接資料庫的模型
(model)、前端頁面設計的模板(template)與和前端所及資料庫所需執行功能 控制與整合的視圖(view)。其架構如圖三-2 所示,由瀏覽器傳送需求,URL 將其導覽至適當頁面,並根據視圖中的程式碼,執行此頁面需執行之事項,有 時會需要連接至資料庫,則必須透過模型進行連接。本論文使用的 Django 版本 為 1.11。
關於設計方面,前端設計結合使用 Pure.UI 進行前端介面設計;後端資料庫 串接使用 Django 自帶的 Sqlite 與架在伺服器中的 MySQL。
圖 三-2 MTV 架構示意
四、 MySQL
MySQL 為一具有免費版本的開源關連式資料庫,架構為由許多列組成表 格,再由許多表格組成一個資料庫。本論文用以存取由 Facebook 爬取回來的資 料,並透過使用 MySQL Workbench 進行管理與執行指令。另外,由於標記的實 驗網站與資料分析皆是用 Python 撰寫,因此使用了 mysql-connector-python 套件 連接。
五、 Sqlite
同樣也是免費開源的資料庫,其架構與 MySQL 相同,都由列組成表,再由 表組成資料庫。但相對於 MySQL,Sqlite 是個較為輕量的資料庫,不用透過架 設伺服器進行資料存取。適合運用在資料量不大及不需支援多台電腦連線的時 候。本論文所使用的 Sqlite 資料庫為 Django 套件預設的,存放 Django 所用到的 系統資料,例如當使用者登入後,Django 會根據使用者取出該使用者的
cookies,或是當使用者切換網站頁面時,Django 必須將該使用者的 session 存進 資料庫中。