使用RSelenium与R刮桌

时间:2016-06-27 09:03:21

标签: java r web-scraping rselenium

我想抓一张像this这样的表格(点击搜索然后你会得到一张合作伙伴表)。我想要刮掉合作伙伴的名字。问题是我不知道什么样的桌子是什么,也不知道如何刮掉它。

我正在使用RSelenium包。如果可以使用rvest完成,那将会非常有用。

那么这是一张什么样的表,是否可以使用RSeleniumrvest进行搜索,如果是,如何?

ul="http://partnerlocator.symantec.com"
remDr$navigate(ul)
webElem<-remDr$findElement(using = "class", value = "button")
webElem$clickElement()
Sys.sleep(10)
webElem<-remDr$findElement(using = "class", value = "results")
unlist(webElem$getElementText())

但是我得到了一个非常复杂的文本输出 -

CDW\nCDW\n200 North Milwaukee Avenue\nVernon Hills ,Illinois ,60061\nUnited States\nDistance: 0 mi\nSymantec Platinum Partner\nCore Security - Platinum\nThreat Protection - Platinum\nCyber Security Services - Platinum\nInformation Protection - Platinum\nDLT Solutions\nDLT Solutions\n2411 Dulles Corner Park Suite 800\nHerndon ,Virginia ,20171\nUnited States\nDistance: 0 mi\nSymantec Platinum Partner\nInformation Protection - Platinum\nThreat Protection - Platinum\nCore Security - Platinum\nCyber Security Services - Platinum\nInsight Direct USA\nInsight Direct USA\n3480 Lotus Drive\nPlano ,Texas ,75075\nUnited States\nDistance: 0 mi\nSymantec Platinum Partner\nCyber Security Services - Platinum\nCore Security - Platinum\nThreat Prot.........

1 个答案:

答案 0 :(得分:0)

这看起来像一个非常基本的HTML表格折叠成一行,可以这样扩展:

library(RSelenium)

checkForServer()
ul="http://partnerlocator.symantec.com"
startServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate(ul)
webElem<-remDr$findElement(using = "class", value = "button")
webElem$clickElement()
Sys.sleep(10)
webElem<-remDr$findElement(using = "class", value = "results")
results <- webElem$getElementText()
results_chr <- unlist(strsplit(results[[1]], "\n"))

head(results_chr)
[1] "CDW"                           "CDW"                           "200 North Milwaukee Avenue"   
[4] "Vernon Hills ,Illinois ,60061" "United States"                 "Distance: 0 mi" 

您可以使用rvest从结果页面的HTML表格返回更清晰的结果,但我无法这样做。