2015-04-23 98 views
0

我想網絡廢料yammer數據使用R,但爲了這樣做首先我必須登錄到這個網頁,(這是我創建的應用程序的身份驗證)。網絡抓取密碼保護網站使用R

https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg

我能夠獲得Yammer的數據一次我登錄到該頁面,但是這一切都是在瀏覽器中通過標準的Yammer的URL (https://www.yammer.com/api/v1/messages/received.json

我有過類似的問題,閱讀和嘗試建議,但仍不能解決這個問題。

我嘗試過使用httr,RSelenium,rvest + Selector小工具。

這裏的最終目標是在R中完成所有工作(獲取數據,清理,情感分析......清理和情感分析部分已完成,但截至目前獲取的數據部分是手動的,我希望通過從R)

1.Trial處理它使用HTTR:

usinghttr<- GET("https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg", 
    authenticate("Username", "Password")) 

相應的結果是:響應[https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg] 日期:2015年4月27日12:25 狀態: 200 Content-Type:text/html; charset = utf-8 大小:15.7 kB 此頁面的內容顯示它已經打開登錄頁面,但沒有進行身份驗證。

2.Trial使用選擇的小工具+ rvest

我試圖刮使用這種方法,但維基百科不可能將其應用到Yammer的身份驗證將在調用的HTML標記selctor小工具使要求。

3.Trial使用RSelenium

試過這種使用標準的瀏覽器和phantomjs但有一些錯誤

> startServer() 

remDr < - remoteDriver $新的()

remDr $ open() [1]「連接到遠程服務器」 RCurl調用中未定義的錯誤。 錯誤queryRD(paste0(serverURL使用, 「/會話」), 「POST」,Q數據=的toJSON(serverOpts)):

> pJS <- phantom() 

錯誤以虛線():PhantomJS二進制不位於。

+0

R是真的不是很大,你會結束。跳過一些痛苦的箍。所有這些可能已經爲Python或C#或其他更常見的自動化語言解決了。您應該考慮使用Python來創建您的數據文件,並讓R讀取它們。 –

+0

thx邁克,我看到有一個名爲yampy的包,專門用於yammer,但現在我想知道如果我能得到一個快速和骯髒的解決方案,使用R,完全同意你,python會給更多強大的解決方案(python在我的「下一步學習」列表截至目前) – vinay

+0

Python並不難。語法有點奇怪(如果你在同一個文件中混合了製表符和空格,上帝會幫助你),但是Python可能是最容易學習的一種,也是最通用的語言之一。這是值得學習的。 –

回答

0

你想用這個做什麼?如果您只是想收集數據,那麼您總是可以使用數據導出API來下載網絡數據,以便進行分析。這需要一個企業網絡。

+0

這就是我沒有管理員帳戶/管理員的特定頁面的約束,使用管理員帳戶,使用數據導出API下載網絡數據非常容易(我只是網絡的成員,所以擁有最基本的訪問權限) – vinay

+0

難道你不能用正在使用的令牌打正常的apis來獲取儘可能多的數據嗎? –

+0

所以這會像這樣流動。 1.創建一個應用程序(yammer.com/client_applications 2.按照https://developer.yammer.com/v1.0/docs/test-token中的說明獲取一個令牌,開始對公開記錄的api進行API調用這是在這裏https://developer.yammer.com/v1.0/docs/rest-api-rate-limits –

1

我也花了很長時間來設法從R內部訪問受密碼保護的網站。 最後我設法通過提交證書作爲html表單。 我快速瀏覽了Yammer的登錄頁面,這看起來與我設法訪問的情況類似。

這是我使用的代碼。您需要將其調整到您的上下文中:您首先在登錄頁面上開始會話,然後到達收集ID和密碼的表單,最後提交表單。 我覺得你的情況,下面的代碼將工作:

session <- html_session("https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg") 
    login_form <- session %>% html_nodes("form") %>% 
    .... %>% #Instructions that lead you to the login form, e.g. extract2(1) 
        html_form() %>% 
        set_values(`login` = YourId,`password` = YourPasswd) 
    Logged_in=session %>% submit_form(login_form)) 

LOGGED_IN應該包含在登錄後的會話信息

BR