将Google Chrome的Inspect Element添加到R中

时间:2014-08-04 13:49:07

标签: r

这个问题是based on another that I saw closed,当我了解Google Chrome的Inspect Element以创建XML::getNodeSet的HTML解析路径时,它产生了好奇心。虽然这个问题已经结束,因为我认为这个问题可能过于宽泛,但我会问一个更小的更集中的问题,这个问题可能会成为问题的根源。

我试图通过编写我通常用于抓取的代码来帮助海报,但是当海报需要谷歌Chrome的Inspect Element中的元素时,我立即跑到墙上。这与此处演示的htmlTreeParse中的HTML不同:

url <- "http://collegecost.ed.gov/scorecard/UniversityProfile.aspx?org=s&id=198969"
doc <- htmlTreeParse(url, useInternalNodes = TRUE) 
m <- capture.output(doc)
any(grepl("258.12", m))
## FALSE

但是在Google Chrome的Inspect Element中我们可以看到提供此信息(黄色):

enter image description here

我们怎样才能将Google Chrome的Inspect Element中的信息传输到R?海报显然可以将代码复制并粘贴到文本编辑器中并解析,但他们希望刮擦,因此工作流程无法扩展。一旦海报可以将这些信息输入R,他们就可以使用典型的HTML解析技术(XLMRCurl - fu)。

1 个答案:

答案 0 :(得分:2)

您应该能够使用以下RSelenium代码来抓取页面。您需要在路径上安装java并使其可用startServer()行(因此您可以执行任何操作)。

library("RSelenium")
checkForServer()
startServer()
remDr <- remoteDriver(remoteServerAddr = "localhost", 
                      port = 4444, 
                      browserName = "firefox"
                      )
url <- "http://collegecost.ed.gov/scorecard/UniversityProfile.aspx?org=s&id=198969"
remDr$open()
remDr$navigate(url)
source <- remDr$getPageSource()[[1]]

检查以确保它符合您的测试:

> grepl("258.12", source)
[1] TRUE