Цикл на R с данными, извлеченными с веб-сайта - PullRequest
0 голосов
/ 22 октября 2018

Мне нужно удалить некоторые данные с сайта, который изменяется только на число.Я пытался сделать петлю, но я просто не могу это сделать.Это способ, с которым я пытался.Я пользуюсь библиотекой rvest

prueba <- data.frame(1:11)

for(KST in 861:1804)){
  url <- print(paste("https://estudiosdemograficosyurbanos.colmex.mx/index.php/edu/rt/metadata/",KST,"/0", sep="")) ## from 861 to 1804
  webpage <- read_html(url)
  articles_data_html <- html_nodes(webpage, 'tr:nth-child(4), tr:nth-child(6), tr:nth-child(8), tr:nth-child(10)
                            , tr:nth-child(12), tr:nth-child(20), tr:nth-child(22) , tr:nth-child(28)
                                   , tr:nth-child(26), tr:nth-child(30), tr:nth-child(32)')
  articles_data <- html_text(articles_data_html)
  #putting on a dataframe
  as.data.frame(prueba[paste("a",KST,sep="")])<-articles_data
  }

кто-нибудь может мне помочь, как это сделать?

Заранее спасибо

1 Ответ

0 голосов
/ 22 октября 2018

Я считаю, что лучший способ решить вашу проблему - использовать объект класса "list" для хранения того, что вы читаете. Что-то вроде следующего.

library(rvest)

prueba <- vector("list", length(861:1804))

for(KST in 861:1804){
    url <- paste("https://estudiosdemograficosyurbanos.colmex.mx/index.php/edu/rt/metadata/",KST,"/0", sep="") ## from 861 to 1804
    webpage <- read_html(url)
    articles_data_html <- html_nodes(webpage, 'tr:nth-child(4), tr:nth-child(6), tr:nth-child(8), tr:nth-child(10)
                            , tr:nth-child(12), tr:nth-child(20), tr:nth-child(22) , tr:nth-child(28)
                                   , tr:nth-child(26), tr:nth-child(30), tr:nth-child(32)')
    articles_data <- html_text(articles_data_html)
    #putting on a dataframe
    prueba[[KST]] <- articles_data
}

Затем, когда высделано, возможно, заканчивается

closeAllConnections()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...