这个问题是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中我们可以看到提供此信息(黄色):
我们怎样才能将Google Chrome的Inspect Element中的信息传输到R?海报显然可以将代码复制并粘贴到文本编辑器中并解析,但他们希望刮擦,因此工作流程无法扩展。一旦海报可以将这些信息输入R,他们就可以使用典型的HTML解析技术(XLM
和RCurl
- fu)。
答案 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