天天看點

《資料科學:R語言實作》——2.8 擷取Facebook資料

本節書摘來自華章出版社《資料科學:r語言實作》一 書中的第2章,第2.8節,作者:r for data science cookbook 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

社交網絡資料對于發掘和分析社會互動的使用者來說,是另一個很好的資料源。社交網絡資料與網站資料的主要不同是,社交網絡通常提供了半結構化的資料格式(大部分是json)。是以,我們可以輕松地通路到資料,而不需要關注資料是如何結構化的。在本教程中,我們會介紹如何使用rvest和rson來讀取和解析facebook的資料。

準備工作

在本教程中,你需要給開發環境安裝r,同時確定計算機可以通路網際網路。

實作步驟

執行下列步驟,通路facebook資料。

《資料科學:R語言實作》——2.8 擷取Facebook資料

3.然後,單擊get token,選擇get access token,如圖20所示。

《資料科學:R語言實作》——2.8 擷取Facebook資料

4.在user data permissions面闆中,選擇user_tagged_places,并單擊get access token,如圖21所示。

《資料科學:R語言實作》——2.8 擷取Facebook資料

5.複制生成的請求令牌到剪貼闆,如圖22所示。

《資料科學:R語言實作》——2.8 擷取Facebook資料

6.嘗試使用rvest通路facebook api:

《資料科學:R語言實作》——2.8 擷取Facebook資料

運作原理

在本教程中,我們介紹了如何通過facebook的圖形api擷取社交網絡資料。與網頁爬取不同,在發出任何内部資料請求之前,你需要擷取facebook的通路令牌。有兩種擷取通路令牌的方式:一個是使用facebook的圖形api探索器,另一個是建立facebook應用。在本教程中,我們介紹了如何使用facebook的圖形api探索器擷取通路令牌。

借助通路令牌,我們可以使用r通路facebook api。首先,我們需要一個http請求程式包。類似于網頁爬取教程,我們使用rvest程式包生成請求。我們建立一個請求url,同時帶有facebook api的access_token(從圖形api探索器複制得到)。我們應該從響應輸出擷取到json格式化的資料。要讀取json格式化資料的屬性,我們安裝加載了rjson程式包。我們可以使用函數fromjson讀取來自響應的json格式字元串。

最後,我們使用函數sapply讀取地點和id資訊,然後我們使用資料框轉換抽取的資訊。在教程結尾,我們應該可以看到資料框格式的資料。

更多技能

1.首先,我們需要安裝加載rfacebook程式包:

2.然後,我們通過提供的通路令牌,使用内置函數擷取使用者資料或者通路類似的資訊:

如果你不希望每次都登入facebook,就可以爬取公開粉絲網頁,你可以建立一個facebook應用來通路内部資料。

1.要建立一個授權的應用令牌,登入facebook開發者頁面,單擊add a new app,如圖23所示。

《資料科學:R語言實作》——2.8 擷取Facebook資料

2.你可以建立一個新的facebook應用,隻要沒有被注冊過即可,可以帶有名稱和合法的e-mail id,如圖24所示。

3.然後,你可以複制應用id和密鑰,并建立通路令牌給|,如圖25所示。現在你可以使用這個令牌,通過圖形api爬取公開粉絲頁面資訊了:

4.與rfacebook類似,我們可以把access_token替換成|:

《資料科學:R語言實作》——2.8 擷取Facebook資料