【发布时间】:2020-12-26 00:04:10
【问题描述】:
我正在尝试学习 RSelenium 包,以便我可以自动从网页中提取数据。当我这样做时,我遇到了一个奇怪的错误。
"no such element: Unable to locate element: {\"method\":\"css selector\",\"selector\":\"[name='rankings_table_length']\"}
(Session info: chrome=87.0.4280.88)
奇怪的是,当我单独运行每一行时,我能够完美地运行脚本,但是当我尝试以块或循环的形式运行这些行时,rselenium 无法找到元素。我知道我通过检查它们得到了正确的元素。有更多 RSelenium 经验的人知道为什么代码在单独运行每一行而不是在一个块中运行时可能工作吗?
下面的完整代码可重现性:
conn <- rsDriver(browser = "chrome",
port = 950L,
chromever = "87.0.4280.88")
chooseStat <- c("Total Offense",
"Total Defense",
"3rd Down Conversion Pct"
)
year <- "2020"
conn$client$open()
conn$client$navigate("https://stats.ncaa.org/")
sportInput <- conn$client$findElement(using = "css", "[name = 'sport']")
sportInput$clickElement()
sportInput$sendKeysToElement(list("football", key = "enter"))
yearInput <- conn$client$findElement(using = "css", "[name = 'acadyr']")
yearInput$clickElement()
yearInput$sendKeysToElement(list(year, key = "enter"))
divInput <- conn$client$findElement(using = "css", "[name = 'u_div']")
divInput$clickElement()
divInput$sendKeysToElement(list("FBS", key = "enter"))
selectTeam <- conn$client$findElement(using = "css", "[id = 'stat_type_T_N']")
selectTeam$clickElement()
statInput <- conn$client$findElement(using = "css",
"[id = 'Stats']")
statInput$clickElement()
statInput$sendKeysToElement(list(chooseStat[1], key = "enter"))
lenInput <- conn$client$findElement(using = "css selector",
"[name='rankings_table_length']")
lenInput$clickElement()
lenInput$sendKeysToElement(list("130", key = "enter"))
tbl <- conn$client$getPageSource()[[1]] %>%
readHTMLTable()
stat_tbl <- tbl$rankings_table
assign(str_replace_all(chooseStat[1], " ", "_"), stat_tbl)
【问题讨论】:
标签: r selenium web-scraping rselenium