-
Notifications
You must be signed in to change notification settings - Fork 10
第 9 章
如果你用了 proxy 来访问 Google 等墙外网站,httr 组件包需要设置 proxy 参数。
library(httr)
set_config(use_proxy(url = "*****", port = xxxx))
Selenium默认浏览器的打开路径一定是在C盘program files里面的,所以firefox最好默认安装路径; Selenium 2.53 跟 firefox 47兼容不好,需要下载这个驱动Marionette driver (https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver) 要不就使用firefox 46版本(参考:http://stackoverflow.com/questions/37693106/selenium-2-53-not-working-on-firefox-47)。
书中用到的 Rwebdriver 组件是该书的作者之一 C. Rubba 编写的,我个人觉得它做得并不好,而且自从三年前提交后就没有再更新过,文档也基本空白。后来我改用 RSelenium 组件,很轻松地解决了 iFrame 等问题,推荐采用它。它的文档可以参阅:https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-basics.html 。
(1) OAuth 的授权和访问端点一般都会在网站的 developers 页面(即开发者网页)里说明,或者通过搜索 " 网站名 + OAuth " 关键字找到。比如针对 Yahoo 的 OAuth 验证,在无法使用 Google 的时候,用 bing.com 搜索 "yahoo OAuth" (珍爱生命,远离百度)找到的第一个结果就是 Yahoo 的开发者网络里关于 OAuth 的内容: https://developer.yahoo.com/oauth/ ,在 Documentation 里就可以找到具体的授权方法。
(2) P220 页这部分内容是专门针对 Facebook 的 OAuth 验证细节。这里的 Settings 部分是指,用户在 Facebook 的网页上注册成为开发者并加入了自己的一个应用之后,在该应用的管理页面上右侧菜单有一个 Settings 可以设置该应用的一些基本选项,其中有一项是该应用对应的网站 Website ,可以添加一些网站的 URL 进去,没有登记在这个网站列表里的 URL 就无法得到 Facebook 返回的信息。这个 URL 可以填写本地主机 "http://localhost:1410/ " 也可以在 R 里调用 oauth_callback() 获取回调 URL(一般就是 http://localhost:1410/ ,不过我还没仔细研究过为什么是这个 URL,直观印象上应该是 R 的 httr 组件指定的接收返回信息的链接) 再填写回去。具体情况如下图所示:
设置 URL 的情况如下图所示:
经过尝试可以发现,本书中关于 Facebook 的 OAuth 授权的内容已经有不少变化。例如,Facebook 的许可清单里有些内容(例如示例代码里的 user_checkins 等等)被取消了或名称已经改变,新版本 httr 组件的某些函数也修改了格式,所以原书的代码会产生一些错误,如下图所示:
这也是我在另一个 issue 里给读者的一个提醒:这本书是关于网络抓取的,而网站的改版不会通知读者而且是经常会发生的,因此请读者不要照搬书中的代码,而是通过书中的示例掌握原理和方法,然后自己去阅读网站上的文档,才能做出有用的东西。
(3) 许可范围的清单是随着网站的不同而不同的,而且不一定每个网站都有这么一项设置。如果需要,在开发者网站上的 OAuth 文档里应该都能够找到相关清单。