3

今天我第一次尝试使用 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 没有说它们是作为表格构建的,所以我真的不知道如何进行。

在此处输入图像描述

4

0 回答 0