2016年4月5日 星期二

[Facebook] 是誰按了讚—不用寫程式也可以知道誰在 FB 粉絲團或社團文章按讚!

源起


前一陣子為了蒐集資料,花了一點時間研究如何在不寫程式的情況下,取得臉書社團或粉絲團中誰按了「讚」。也許有人會問,知道這個要做啥?以學術的觀點來看,瞭解誰看了誰的臉書文章,或誰對誰的臉書文章按「讚」,可以描繪出這群人的「社交網路」圖,從中看出臉書好友關係的親疏遠近。所以這些資料對社會學、教育方面的研究是非常有用的。

但是,這些資料實在不好取得。首先,目前臉書對於使用者隱私非常注重,如果想利用寫程式來取得這些資料,需要向臉書申請 App 權限。但像我們只是臨時要資料的人來說,申請過程要附的證明資訊,我們都不會有,所以這條路不行。另外,我們可以透過臉書提供的 Graph API 及 FQL(類似 SQL)來取得資料,但過程中需要取得 Access Token(類似授權 App ID 可擷取資料)。如果要以寫程式的方式取得,前提是要架一個網站。但只是想暫時取得資料的話,這又太過於麻煩。

所以,為了避免這些麻煩事,我花了些時間研究如何在不寫程式的情況下,也可以擷取到臉書粉絲團或社團文章按「讚」的使用者名單。中間的步驟可能有些繁雜,但對於程式功力不強(或沒有),但又想取得資料的人,不失為一個可行的方式。

在開始之前


在開始進行教學之前,請先確認以下幾件事:

  1. 已經註冊了臉書的開發人員,並且申請了一個 App ID
  2. 你是粉絲團或社團的管理者。
確認了這些事項後,就可以進行以下的步驟了。

步驟


登入臉書


首先先開啟瀏覽器,登入您的臉書。

連線到 Graph API Explorer


在同一個瀏覽器中,開啟新的分頁,然後在新分頁中輸入以下的網址:https://developers.facebook.com/tools/explorer/,接下 Enter 鍵之後,應該會看到以下的畫面:

Graph API Explorer 主畫面

選取作業用的 App ID


在 Graph API Explorer 視窗右上角的「Application」下拉選單中,選擇要用來取得資料的 App ID 名稱(在本例中是選擇「彼得潘老飛俠」)。

選擇要用來取得資料的 App ID

取得 User Access Token


選取了取得資料的 App ID 之後, 請點選下方的「Get Token」選單,然後選取「Get User Access Token」,以取得授權。

選取「Get User Access Token」,以取得授權 

選取「Get User Access Token」之後,會出現「Select Permission」對話方塊,其中會列出 App 的資料存取授權範圍。基本上不用更改,只要確認「User_Managed_Groups」選項有勾選即可。確認完畢後,請按下方的「Get Access Token」按鈕,就可以取得 Access Token。

確認 App 的權限

取得粉絲專頁或社團 ID


取得 App 的授權後,接著我們要取得的是臉書粉絲專頁或社團的 ID。臉書會提供粉絲團或社團一個專頁編號,但兩者取得的方式不同。在「粉絲專頁」中,請點選「關於」。


點選「粉絲團」中的「關於」

此時會出現「專頁資訊」,請把此頁捲到最下面,會出現「Facebook 專頁編號」,請記錄此編號,等下會用到。


粉絲專頁的 ID

而「社團」ID 取得方式又不同,當您點選某一個臉書社團時,在網址列中會出現以下的網址:https://www.facebook.com/groups/xxxxxxxxxxxxxxx/ (x 是代表數字)。在 「groups」後面的一串數字,就是「社團」ID。如果您是想擷取社團的資料,請記錄這串 ID,稍後會用到。

「groups」後面的那串數字就是「社團 ID」

取得粉絲專頁或社團資訊


接下來我們就要開始擷取粉絲專頁或社團中,誰針對文章按了「讚」。首先,請在 Graph API Explorer 中,點選「Access Token:」下方的「Graph API」,此時,你會看到在「Graph API」的下方,有一行字:「GET ->/v2.5/me?fileds=id,name」。這一行字就是我們要用來下查詢指令的區域。

這一行可以用來下查詢指令

如果您未修改預設指令,直接按了右邊的「Submit」按鈕,在下方結果區域的左邊就會出現查詢的欄位,右邊會出現以 JSON 格式呈現的查詢結果。這個指令代表的是查詢您個人(me)的臉書 ID(id)及姓名(name)資訊。(Node 及 Field 所代表的意義請看 Graph API 說明文件)。

查詢欄位與查詢結果的呈現

因此,我們要查詢粉絲專頁或社團的文章有誰按讚的話,就要用到剛剛記錄下來的粉絲專頁或社團 ID。所以,請先清除查詢指令中的「me?fileds=id,name」,然後貼上粉絲專頁或社團 ID,按下「Submit」按鈕,查詢結果就會出現在畫面右方。(見下圖):

以社團 ID 來查詢社團的基本資訊

在本例中是用某個私密性社團的 ID 來查詢,左方查詢條件的框框中會出現「Node:1592115xxxxx」,表示我們現在查詢的是 Node ID 為「1592115xxxxx」的資訊;右方則是這個Node(社團)的基本資訊,包含了三個欄位資訊:

  • name:粉絲專頁或社團名稱
  • privacy:社團的隱私設定(粉絲專頁無此欄位)。「CLOSED」表示是私密性社團。
  • id:粉絲專頁或社團 ID。
取得了社團的基本資訊之後,我們就可以開始取得每一篇貼文有誰按讚。

取得貼文按讚人數


接續剛剛的例子,我們可以加入搜尋的欄位,來找出有誰在貼文上按讚。在左方查詢條件的框框中,可以看到有「+ Search for a field」的選項。我們可以點選「+」,會出現條件的下拉式選單,因為我們要查的是貼文有誰按讚,在 Graph API 中,「feed」就是代表貼文,所以請在選單中選取「feed」。

先選擇代表貼文的「feed」

接下來在「feed」的下一層中,再加入「likes」(讚〉這個條件,加入後按下「Submit」按鈕執行查詢。

在「feed」下面再加入「likes」的條件

查詢的結果如圖。我們可以看到紅框中的資料,表示這是有人按讚的貼文。其中最外層的「id」,是代表貼文的 id,「likes」以下大括號內的資料,以兩個欄位(id, name)為一組,代表按讚使用者的 ID(id)及姓名(name)。

查詢結果,可以看到哪些使用者按「讚」

如果您的粉絲專頁或社團的貼文數量太多,Graph API 會以 25 篇貼文為一個單位顯示資料。 您可以加入「limit」這個修飾字,設定一次要顯示的資料筆數,再按「Submit」按鈕(如下圖,在此例中設定為一次顯示 500 筆貼文),右邊就會顯示 500 筆的貼文資料。

加入「limit」修飾字,並修改括號中的數字,可調整每次查詢所顯示的資料筆數。

將 JSON 查詢結果轉換成 CSV 格式


前面我們有提到,查詢結果是以 JSON 格式顯示,如果我們要利用這些資料,例如匯入資料庫以供查詢、進行社群網路研究等,必須轉換資料格式。在本例中,我們將利用網路上的免費工具,將 JSON 格式轉換成 CSV 檔,供微軟的 Excel 讀取。

首先,請先開啟這個轉換的網站:https://json-csv.com/,只要您的轉換資料容量小於 1MB,這個網站可以免費幫您轉換,超過 1MB 以上就要付費了。

將 JSON 格式的資料轉換為 CSV 的網站

接著,按下畫面右側的齒輪圖示,在「Setting」畫面中,在「nested data」下拉式選單中,選擇「matrix style」,然後按「Close」關閉。

修改「巢狀資料」的處理方式

設定完成後, 請複製在 Graph API Explorer 中的查詢結果,將其貼到轉換網站的轉換區域內。

將查詢結果貼到轉換區域內

結果就會出現在網站下方,您可以直接按上方的「Download」按鈕下載這個 CSV 檔:

轉換之後的結果

CSV 檔內容:

直接用 Excel 開啟 csv 檔

到此就大功告成了!

結語


透過 Graph API Explorer,可以取得臉書粉絲專頁及社團的資料,例如文章內容、按讚人數、成員清單等,對於有需要利用臉書資料進行研究,但對程式設計一竅不通的人來說,這種方式是比較容易的。如果想要進一步瞭解 Graph API 的功能,可以參考臉書的 Graph API 文件,會有更詳細的說明。如果您對本文內容中的任何步驟有疑問的話,歡迎留言喲!

8 則留言:

  1. 您好
    我想請問一下,我在讀取私密性社團時(我是裡面的成員),
    想要讀取貼文內容feed limit(10),不過在submit之後出現
    "Please reduce the amount of data you're asking for, then retry your request"的字樣,照理說10則貼文應該不多,但是卻出現這種情形,所以想請益一下
    感謝您

    回覆刪除
    回覆
    1. 您好,所以您是要取得貼文嗎?

      刪除
    2. 我測試過了,這個是沒有問題的。
      我猜應該是 feed 與 limit 中間沒有句點分隔,應該是這樣:
      feed.limit(10)

      這樣才會查詢到正確的內容

      刪除
  2. 您好,想請問一下
    該工具是否無法直接讀取粉絲團的Likes, 和被標記內容?

    回覆刪除
  3. 您好!
    感謝您的教學,文章中是"文章"按讚成員的LIST,請教如何得到粉絲團專頁按讚用戶LIST

    回覆刪除
  4. 你好~
    想請教想要抓取社團裡的貼文中,每位留言的內容
    該怎麼辦~
    Thanks

    回覆刪除