RSelenium - 从表(和非表)中提取数据

时间:2016-03-22 17:28:06

标签: r web-scraping rselenium

我今天第一次使用RSelenium从网站上抓取数据。我可以通过选项卡和下拉菜单(硬位?)导航到我需要的数据,但我现在停留在提取我需要的实际数据的位置(简单的位!)

到目前为止我的代码是:

library(RSelenium)
checkForServer()
startServer()
remDr <- remoteDriver$new()
remDr$open()
remDr$navigate("https://www.whoscored.com/Teams/31")
webElem1 <- remDr$findElement(value = '//a[@href = "#team-squad-stats-detailed"]')
webElem1$clickElement()
webElem2 <- remDr$findElement("id", "category")
webElem2$clickElement()
webElem2$sendKeysToElement(list(key="down_arrow", key="down_arrow", key="down_arrow",
 key="down_arrow", key="down_arrow", key="enter"))
webElem3 <- remDr$findElement("id", "subcategory")
webElem3$clickElement()
webElem3$sendKeysToElement(list(key="down_arrow", key="enter"))
webElem4 <- remDr$findElement("id", "statsAccumulationType")
webElem4$clickElement()
webElem4$sendKeysToElement(list(key="down_arrow", key="down_arrow", key="down_arrow",
 key="enter"))
webElem5 <- remDr$findElement("id", "player-table-statistics-body")

有人可以建议最简单的方法将此播放器表中的数据提取为csv格式吗?我习惯使用XML包和readHTMLTable来抓取其他(静态)网站,但我仍然坚持如何将它与上面的RSelenium步骤结合起来。

谢谢

编辑 - 我以新的眼光回到这里,我找到的答案如下:

webElem5 <- remDr$findElement(using = "id", value = "statistics-table-detailed")
webElem5txt <- webElem5$getElementAttribute("outerHTML")[[1]]
table <- readHTMLTable(webElem5txt, header=TRUE, as.data.frame=TRUE)[[1]]

这使我可以在网站的这一部分继续我需要的东西。

如果可以的话,我想向同一网站的另一部分寻求帮助。我导航到我需要的数据如下:

remDr$navigate("https://www.whoscored.com/Matches/959894")
webElem1 <- remDr$findElement(using = "link text", value = "Match Centre")
webElem1$clickElement()
webElem2 <- remDr$findElement(value = '//a[@href = "#chalkboard"]')
webElem2$clickElement()

我想要提取的数据在这些框中,但由于HTML没有说它们是作为表构建的,所以我真的不知道如何继续。

enter image description here

0 个答案:

没有答案