Rselenium返回的元素比预期多得多

时间:2017-09-14 16:04:14

标签: r selenium rselenium

我想从这个page找到不同的曲棍球比赛/联赛的名称。问题是我最终得到了近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

1 个答案:

答案 0 :(得分:1)

实际上你选择了很多类型的元素来搜索!

查看它的一种方法是---我最喜欢的工具---安装SelectorGadgets(Chrome扩展程序),然后尝试点击您尝试抓取的元素(或者更好,只需键入#archive-表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个元素更接近您想要的,尽管您必须过滤掉其中的一些元素,例如亚洲。如果情况不好,请告诉我。