Заставьте getElementText пройти через цикл - PullRequest
0 голосов
/ 25 апреля 2019

Я использовал пакет RSelenium для очистки веб-страниц

мой код:

library(RSelenium)
driver <- rsDriver(port=4444L,browser="chrome")
remote_driver <- driver$client
remote_driver$open()
remote_driver$navigate("https://www.amazon.in/b/?_encoding=UTF8&node=1389401031&ref_=sv_top_elec_mega_1")
one<-remote_driver$findElement(using = "class", value="crwTitle")
k<- one$getElementText()

это работает, но возвращает только одну запись, как показано здесь

выход k:

[1] "Samsung Galaxy M30 (Gradation Blue, 4+64 GB)"

Я пытался создать цикл

gettx <- lapply(one,function(one) {
  one$getElementText()
})

но я получил эту ошибку

Error in one$getElementText : object of type 'closure' is not subsettable

я ожидаю


Samsung Galaxy M30 (Gradation Blue, 4+64 GB)
Samsung Galaxy M20 (Ocean Blue, 4+64GB)
Redmi 6A (Black, 2GB RAM, 16GB Storage)

...........etc

Я имею в виду, что мне нужно вернуть все элементы одного класса.

любая помощь?

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете сделать:

remDr$navigate("https://www.amazon.in/b/?_encoding=
                UTF8&node=1389401031&ref_=sv_top_elec_mega_1")
elems <- remDr$findElements(using = "class", value="crwTitle")

lapply(elems, function(elem) {
  elem$getElementText()
})

Обратите внимание, что remDr$findElement() просто находит один элемент, в то время как remDr$findElements() находит список элементов.

...