2016-05-04 5 views
1

Ich kann bis zu 11 Scrollings scracken, danach müssen wir auf "Show More Products" klicken. Was kann getan werden, damit ich weiter scrollen kann? Im Folgenden finden Sie meine aktuellen Code:Scrollen Sie durch einen Weblink, indem Sie auf "Weitere Produkte anzeigen" klicken und die Produktinformationen abrufen.

library(RSelenium) 
require(RCurl) 
require(XML) 
require(dplyr) 
require(stringr) 
require(rvest) 

shell.exec(paste0("C:/Users/Nitin Kansal/Desktop/R/batch.bat")) 

#start RSelenium 

checkForServer() 
startServer() 
remDr <- remoteDriver() 
remDr$open() 

# load your page 

remDr$navigate("http://www.jabong.com/kids/clothing/girls-clothing/kids-tops-t-shirts/?source=topnav_kids") 

# scroll down 11 times, allowing 3 second for the page to load everytime 

for(i in 1:11){  
    remDr$executeScript(paste("scroll(0,",i*10000,");")) 
    Sys.sleep(3)  
} 

# get the page html 

page_source <- remDr$getPageSource() 

# get the URL's that you are looking for 

pp <- xml2::read_html(page_source[[1]]) %>% 
    rvest::html_nodes("a") %>% 
    rvest::html_attr("data-original-href") %>% 
    {.[!is.na(.)]} 

pp <- as.data.frame(pp) 

Antwort

1

Nach 11 mal Scrollen versuchen, dies im Code enthalten

remDr$findElement(using = 'css selector', ".load-more-products")$clickElement()

, dass eine andere Seite und dann relevante Details kratzen erzeugen würde.

Schleife durch den Prozess.

+0

Sollte ich in die for-Schleife legen? für (i in 1:15) { remDr $ executeScript (einfügen ("scroll (0,", i * 10000, ");")) remDr $ findElement (mit = 'css selector', ".load -more-products ") $ clickElement() Sys.sleep (3) } –

+1

Ja natürlich. Fügen Sie außerdem Sys.sleep (5) hinzu, damit Sie eine Seite laden können – Bharath

Verwandte Themen