Подтвердить что ты не робот

Очистка динамической страницы электронной коммерции с бесконечной прокруткой

Я использую rvest в R, чтобы сделать некоторые очистки. Я знаю немного HTML и CSS.

Я хочу получить цены на каждый продукт URI:

http://www.linio.com.co/tecnologia/celulares-telefonia-gps/

Новые элементы загружаются по мере того, как вы переходите на страницу вниз (как при прокрутке).

Что я сделал до сих пор:

Linio_Celulares <- html("http://www.linio.com.co/celulares-telefonia-gps/")

Linio_Celulares %>%
  html_nodes(".product-itm-price-new") %>%
  html_text()

И я получаю то, что мне нужно, но только для 25 первых элементов (те загружаются по умолчанию).

 [1] "$ 1.999.900" "$ 1.999.900" "$ 1.999.900" "$ 2.299.900" "$ 2.279.900"
 [6] "$ 2.279.900" "$ 1.159.900" "$ 1.749.900" "$ 1.879.900" "$ 189.900"  
[11] "$ 2.299.900" "$ 2.499.900" "$ 2.499.900" "$ 2.799.000" "$ 529.900"  
[16] "$ 2.699.900" "$ 2.149.900" "$ 189.900"   "$ 2.549.900" "$ 1.395.900"
[21] "$ 249.900"   "$ 41.900"    "$ 319.900"   "$ 149.900" 

Вопрос: Как получить все элементы этого динамического раздела?

Я думаю, я мог бы прокрутить страницу, пока все элементы не загрузятся, а затем использовать HTML (URL). Но это похоже на большую работу (я планирую делать это в разных разделах). Должна быть программная работа вокруг.

4b9b3361

Ответ 1

Как предложил @nrussell, вы можете использовать RSelenium для программной прокрутки вниз страницы до получения исходного кода.

Например, вы можете:

library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()

#navigate to your page
remDr$navigate("http://www.linio.com.co/tecnologia/celulares-telefonia-gps/")

#scroll down 5 times, waiting for the page to load at each time
for(i in 1:5){      
remDr$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(3)    
}

#get the page html
page_source<-remDr$getPageSource()

#parse it
html(page_source[[1]]) %>% html_nodes(".product-itm-price-new") %>%
  html_text()

Ответ 2

library(rvest)
url<-"https://www.linio.com.co/c/celulares-y-tablets?page=1"
page<-html_session(url)

html_nodes(page,css=".price-secondary") %>% html_text()

Просмотрите веб-сайт https://www.linio.com.co/c/celulares-y-tablets?page=2 и 3 и т.д., И вам будет легко очистить данные

РЕДАКТИРОВАТЬ от 07/05/2019

Элементы сайта изменены. Отсюда новый код

library(rvest)
url<-"https://www.linio.com.co/c/celulares-y-tablets?page=1"
page<-html_session(url)

html_nodes(page,css=".price-main") %>% html_text()