查询选择器全部在rvest包中

时间:2016-08-31 13:09:44

标签: javascript r rvest

我尝试执行这个javascript命令:

document.querySelectorAll('div.Dashboard-section div.pure-u-1-1 span.ng-scope')[0].innerText

在r中使用rvest包使用以下代码:

library(rvest)

url <- read_html("")

url %>%
  html_nodes("div.Dashboard-section div.pure-u-1-1 span.ng-scope") %>%
  html_text()

但我结果如下:

character(0)

我希望如此:

"Displaying results 1-25 of 10,897"

我该怎么办?

1 个答案:

答案 0 :(得分:1)

简而言之,rvest包可以获取HTML,但它无法执行Javascript。您尝试获取的页面通过AJAX,javascript加载数据。

对于解决方法,您可以使用RSelenium包,正如用户neoFox建议的那样。 Selenium Webdriver会为您启动Firefox或Chrome,导航到该页面,等待它加载。并从HTML DOM中获取数据片段。

或者使用更小的phantomjs无头浏览器将HTML页面下载到html文件,而不会弹出浏览器GUI。使用R。

Read in and parse下载的HTML文件

两者都需要一些严肃的配置。 Selenium是基于java的。 Phantomjs要求至少阅读其文档。

您还可以检查页面,找出该网站正在发出的POST请求,并自行发送此POST。然后获取它返回的JSON并自己计算结果项。