Я использую RSelenium
, чтобы выполнить простой поиск в Google.Настройка:
library(tidyverse)
library(RSelenium) # running docker to do this
library(rvest)
library(httr)
remDr <- remoteDriver(port = 4445L, browserName = "chrome")
remDr$open()
remDr$navigate("https://books.google.com/")
books <- remDr$findElement(using = "css", "[name = 'q']")
books$sendKeysToElement(list("NHL teams", key = "enter"))
bookElem <- remDr$findElements(using = "css", "h3.LC20lb")
Это самая простая часть.Теперь на первой странице есть 10 ссылок, и Я хочу нажать на каждую ссылку, вернуться назад и затем кликнуть следующую ссылку. Какой самый эффективный способ сделать это?Я пробовал следующее:
bookElem$clickElement()
Возвращает Error: attempt to apply non-function
- Я ожидал, что это нажмет на первую ссылку, но ничего хорошего.(Это работает, если я снимаю s
с findElements()
- выше, а не цикл for
ниже).
clack <- lapply(bookElem, function(y) {
y$clickElement()
y$goBack()
})
Возникает ошибка, вроде как этот вопрос :
Error: Summary: StaleElementReference
Detail: An element command failed because the referenced element is no longer attached to the DOM.
Further Details: run errorDetails method
Было бы проще в использовании rvest
, в пределах RSelenium
?