R - Очистить несколько URL и записать каждый URL данных в разных листах Excel - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь очистить разные URL и записать данные в один и тот же файл Excel, но на одной странице для каждого URL.

Мой код такой:

#install.packages("rvest")

library(XLConnect)
library(rvest)
{
 for(i in c("2086","2167","2204")) {
   url<-paste0("https://www.silversanz.com/producto/",i,)

}
 dades<-read_html(url)

 nom<-dades %>% html_nodes("h1.title") %>% html_text() %>% trimws()
 preu<-dades %>% html_nodes("p.price--current") %>% html_text() %>% trimws()

 info<-as.data.frame(cbind(nom,preu))

 writeWorksheetToFile(file="C:/xxx.xxx.xlsx",
                   data=info,
                   sheet= "test",
                   clearSheets=TRUE
 )
}

У меня две проблемы:

  • Этот код не работает ->

     for(i in c("2086","2167","2204")) {
     url<-paste0("https://www.silversanz.com/producto/",i,)
    
  • Я не знаю, как написать один лист для каждого URL

Заранее спасибо: -)

1 Ответ

0 голосов
/ 05 апреля 2019

Вы неправильно использовали скобки.for-loop, который вы написали, перебирает числа и сохраняет последнее в url.Вместо этого ваш for-loop должен содержать весь ваш код:

library(XLConnect)
library(rvest)

for(i in c("2086","2167","2204")) {

   url<-paste0("https://www.silversanz.com/producto/",i)

   dades<-read_html(url)

   nom<-dades %>% html_nodes("h1.title") %>% html_text() %>% trimws()
   preu<-dades %>% html_nodes("p.price--current") %>% html_text() %>% trimws()

   info<-as.data.frame(cbind(nom,preu))

   writeWorksheetToFile(file="C:/xxx.xxx.xlsx",
                     data=info,
                     sheet= i,
                     clearSheets=TRUE)
}

Что касается листа, теперь, когда все в цикле, просто используйте i в качестве имени листа, чтобы иметь один лист наURL-адрес.

...