0

我想使用 R 网络抓取 yammer 数据,但为了这样做,首先我必须登录到这个页面,(这是我创建的应用程序的身份验证)。

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.试用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-04-27 12:25 状态:200 内容类型:text/html;charset=utf-8 Size: 15.7 kB 该页面内容显示已打开登录页面但未验证。

2.试用选择器小工具+rvest

我尝试使用此方法抓取维基百科,但无法将其应用于 yammer,因为在调用 selctor 小工具提供的 html 标记之前需要进行身份验证。

3.试用RSelenium

使用标准浏览器和 phantomjs 进行了尝试,但出现了一些错误

> startServer()

remDr <- remoteDriver$new()

remDr$open() [1] "连接到远程服务器" RCurl 调用中的未定义错误。queryRD(paste0(serverURL, "/session"), "POST", qdata = toJSON(serverOpts)) 中的错误:

> pJS <- phantom()

phantom() 中的错误:找不到 PhantomJS 二进制文件。

4

2 回答 2

2

我还花了很长时间来设法从 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

于 2015-11-30T13:03:14.813 回答
0

你想用这个来达到什么目的?如果您只是想收集数据,那么您始终可以使用数据导出 API 来下载网络数据以进行分析。这需要企业网络。

于 2015-05-08T21:21:46.723 回答