获取谷歌浏览器&x27;s将元件检查到R中

获取谷歌浏览器&x27;s将元件检查到R中,r,R,当我了解到Google Chrome的Inspect元素为XML::getNodeSet创建HTML解析路径时,这个问题引起了我的好奇心。虽然这个问题已经结束了,因为我认为它可能太宽泛了,但我会问一个更小、更集中的问题,这可能是问题的根源 我试图通过编写我通常用于刮擦的代码来帮助海报,但由于海报需要谷歌Chrome的Inspect元素中的元素,我立即撞到了墙上。这与htmlTreeParse中的HTML不同,如下所示: url <- "http://collegecost.ed.gov/s

当我了解到Google Chrome的Inspect元素为
XML::getNodeSet
创建HTML解析路径时,这个问题引起了我的好奇心。虽然这个问题已经结束了,因为我认为它可能太宽泛了,但我会问一个更小、更集中的问题,这可能是问题的根源

我试图通过编写我通常用于刮擦的代码来帮助海报,但由于海报需要谷歌Chrome的Inspect元素中的元素,我立即撞到了墙上。这与
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

url您应该能够使用类似以下RSelenium代码的内容来刮取页面。您需要安装java并在路径上可用,
startServer()
行才能工作(因此您可以做任何事情)


问题是信息不在文档源中。它在javascript加载后被修改。因此,要获得该值,需要让javascript运行。与简单的抓取不同,您可以使用这个包,它允许您与更像浏览器的东西进行交互,从而可以处理javascript。或者你可以看看js从哪里获取数据并直接访问资源。我这周不在R了。我回来后会测试的。谢谢。如果您使用dev版本
devtools::install_github(“ropensci/RSelenium”)
并安装了
phantomjs
,您就可以驱动
phantomjs
,而无需selenium服务器。有关详细信息,请参见
?RSelenium::phantom
。还有一个优势是,
phantomjs
是无头的。
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