Rselenium returns 比预期更多的元素

Rselenium returns many more elements than expected

我想从这个 page 中找到不同曲棍球 tournament/leagues 的名称。问题是我最终得到了将近 8000 个元素,我不明白这是为什么。

library(RSelenium)
rs <- rsDriver()
remote <- rs$client

remote$navigate("http://www.oddsportal.com/results/#hockey")
elems <- remote$findElements("css selector", "#archive-tables > table a") 
# tournaments <- unlist(sapply(elems, function(x) x$getElementText())) This takes very long time due to the number of elements

实际上有很多您选择搜索的类型的元素!

查看它的一种方法是——我最喜欢的工具——是安装 SelectorGadgets(一个 Chrome 扩展),然后尝试点击你试图抓取的元素(或者更好,只需输入#archive-tables a)。

您会看到许多其他类别的超链接,例如足球、网球、篮球等,RSelenium 无法根据您的命令进行区分,它们以黄色闪烁。

以下解决方案很幼稚,但很快。我喜欢 rvest,因为我喜欢使用管道,而且它对我来说更直观---安装包 rvest,然后

library(rvest)
odds_portal <- read_html("http://www.oddsportal.com/results/#hockey")
temp <- odds_portal %>% html_nodes("#archive-tables a") %>% html_text()
a <- which(temp=="Hockey")
b <- which(temp=="Handball")
temp[a:(b-1)]

我认为生成的 320 个元素更接近您想要的,尽管您必须过滤掉其中的一些元素,例如亚洲。如果效果不佳,请告诉我。