Web使用R抓取密码保护的网站

时间:2015-04-23 08:43:08

标签: r yammer httr rvest rselenium

我想使用R来废弃yammer数据,但为了做到这一点,首先必须登录到此页面(这是我创建的应用程序的身份验证)。

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

登录此页面后,我能够获取yammer数据,但所有这些都是在标准yammer网址的浏览器中 (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-04-27 12:25   状态:200   内容类型:text / html;字符集= utf-8的   大小:15.7 kB 此页面的内容显示它已打开登录页面但未进行身份验证。

2.Trial使用选择器小工具+ rvest

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

3.Trial使用RSelenium

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

> startServer()
  

remDr&lt; - remoteDriver $ new()

     

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

> pJS <- phantom()

幻像()中出错:未找到PhantomJS二进制文件。

2 个答案:

答案 0 :(得分:1)

我还花了很长时间来设法从内部访问受密码保护的网站。 最后,我设法通过将凭据作为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

答案 1 :(得分:0)

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