让 getElementText 进入循环
Make getElementText go through loop
我使用 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()
它有效,但它 return 只有一条记录,如此处所示
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
我的意思是我需要 return 所有元素都具有相同的 class。
有什么帮助吗?
你可以这样做:
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()
查找元素列表。
我使用 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()
它有效,但它 return 只有一条记录,如此处所示
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
我的意思是我需要 return 所有元素都具有相同的 class。
有什么帮助吗?
你可以这样做:
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()
查找元素列表。