J'utilise rvest
dans R pour gratter. Je connais un peu HTML et CSS.
Je veux obtenir les prix de chaque produit d'un URI:
http://www.linio.com.co/tecnologia/celulares-telefonia-gps/
Les nouveaux éléments se chargent au fur et à mesure que vous faites défiler la page.
Ce que j'ai fait jusqu'à présent:
Linio_Celulares <- html("http://www.linio.com.co/celulares-telefonia-gps/")
Linio_Celulares %>%
html_nodes(".product-itm-price-new") %>%
html_text()
Et j'obtiens ce dont j'ai besoin, mais seulement pour les 25 premiers éléments (ceux qui sont chargés par défaut).
[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"
Question: Comment obtenir tous les éléments de cette section dynamique?
Je suppose que je pourrais faire défiler la page jusqu'à ce que tous les éléments soient chargés, puis utiliser HTML (URL). Mais cela semble être beaucoup de travail (je prévois de le faire sur différentes sections). Il devrait y avoir un travail programmatique autour.
Tout indice est le bienvenu!
Comme @nrussell l'a suggéré, vous pouvez utiliser RSelenium
pour faire défiler la page par programmation avant d'obtenir le code source.
Vous pouvez par exemple faire:
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()
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()
Parcourez les sites Web https://www.linio.com.co/c/celulares-y-tablets?page=2
et 3, etc., et il vous sera facile de récupérer les données.