【发布时间】:2021-05-12 11:11:11
【问题描述】:
我正在用RSelenium 抓取https://www.tandfonline.com/loi/sabo20。
我想点击每个li,其文本以2015 到2021 结尾。 xpath 运行良好。
可能缺少一年(例如2021),这就是我使用try()-方法的原因。
URL <- "https://www.tandfonline.com/loi/sabo20"
# open RSelenium
rD <- RSelenium::rsDriver(browser = "chrome", chromever = "90.0.4430.24", port = 4546L, verbose = F)
remDr <- rD[["client"]]
remDr$navigate(URL)
Sys.sleep(4)
for (yyyy in c(2015:2021)) {
error <- "Error : \t Summary: NoSuchElement\n \t Detail: An element could not be located on the page using the given search parameters.\n \t class: org.openqa.selenium.NoSuchElementException\n\t Further Details: run errorDetails method\n"
volumes <- try(unlist(
remDr$findElement(
using = "xpath",
paste0(
"//li[substring(@id, string-length(@id) - string-length('",
yyyy,
"') +1) = '",
yyyy,
"']/div"
)
)
))
if(volumes[1] == error)
break;
volumes$clickElement()
}
不幸的是,如果findElement() 成功,if(volumes[1] == error) 会导致错误:
volumes[1] 中的错误:“S4”类型的对象不是子集
在我clickElement() 之前,我如何检查remDr$findElement() 是否成功?
【问题讨论】:
标签: r try-catch rvest rselenium s4