
Boa noite pessoal, Estou tentando reproduzir um tutorial de web scraping no r que está disponível na seguinte página: https://sillasgonzaga.github.io/2016-11-18-olx1/ Em determinada etapa aparece o seguinte erro: Error in `[[<-.data.frame`(`*tmp*`, "adicional", value = character(0)) : replacement has 0 rows, data has 50 In addition: Warning message: In function_list[[k]](value) : NAs introduced by coercion Timing stopped at: 3 0.75 4.94 Ao que parece existe um problema com o número de linhas do dataframe quando as informações são extraídas, mas não consigo detectar qual o problema, alguém poderia me ajudar? O código que estou executando é o que segue abaixo: # Pacotes para instalar no R: if(!require(c('magrittr','rvest','readr','stringr','curl','tidyr','dplyr'))) {install.packages(c('magrittr','rvest','readr','stringr','curl','tidyr','dplyr') ,type='binary',dep=T)} library("magrittr") # não vivo sem esse pacote library("rvest") # principal pacote para web-scraping library("readr") # usado para extrair numeros de texto library("stringr") # usado para o data cleaning library('curl') # usado como suporte para o rvest library("tidyr") # data cleaning library("dplyr") # data cleaning url_apt <- " http://rj.olx.com.br/rio-de-janeiro-e-regiao/imoveis/aluguel/apartamentos" number_pages <- 245 #hard coded # Criar vetor com todos os urls para as páginas do olx lista_urls <- paste0(url_apt, "?o=", 1:number_pages) limparString <- function(x) { # x = string coletado do olx x %<>% str_replace_all("[\t]", "") x %<>% str_replace_all("[\n]", "") x %<>% str_replace_all("Apartamentos", "") x %<>% str_replace_all("Anúncio Profissional", "") x %<>% str_replace("-", "") x %<>% str_replace_all("[R$]", "") x %<>% str_replace_all("[.]", "") x %<>% str_trim() return(x) } extrairAnuncios <- function(url_pagina, info_adicional) { ### INPUTS: # url_pagina: url de uma pagina do olx com uma lista de links de anúncios. # info_adicional: variavel booleana. se verdadeiro, faz o scraping de dados adicionais do anuncio # ... deve ser usado apenas para apartamentos, pois a sintaxe do html para quartos é diferente mycurl <- curl(url_pagina, handle = curl::new_handle("useragent" = "Mozilla/5.0")) mycurl <- read_html(mycurl) x <- mycurl %>% html_nodes(".OLXad-list-link") # extrair link do anuncio col_links <- mycurl %>% html_nodes(".OLXad-list-link") %>% html_attr("href") # extrair titulo do anuncio col_titles <- mycurl %>% html_nodes(".OLXad-list-link") %>% html_attr("title") # extrair preço precos <- lapply(x, . %>% html_nodes(".col-3")) precos %<>% lapply(html_text) precos %<>% unlist() precos %<>% limparString() precos %<>% as.numeric() col_precos <- precos # extrair bairros bairros <- mycurl %>% html_nodes(".OLXad-list-line-2") %>% html_text() bairros %<>% str_replace_all("[\t]", "") bairros %<>% str_replace_all("[\n]", "") bairros %<>% str_replace_all("Apartamentos", "") bairros %<>% str_replace_all("Aluguel de quartos", "") bairros %<>% str_replace_all("Anúncio Profissional", "") bairros %<>% str_replace("-", "") bairros %<>% str_trim() col_bairros <- bairros # extrair informações adicionais de apartamento if (info_adicional) { adicional <- mycurl %>% html_nodes(".mt5px") %>% html_text() adicional %<>% str_replace_all("[\t]", "") adicional %<>% str_replace_all("[\n]", "") col_adicionais <- adicional } return(data.frame(link = col_links, titulo = col_titles, preco = col_precos, bairro = col_bairros, adicional = col_adicionais, stringsAsFactors = FALSE)) } url_teste <- lista_urls[1] system.time(df <- extrairAnuncios(url_teste, info_adicional = TRUE)) Agradeço a ajuda, *Hélder Santos* *Eng. Agr. Salvador-BA*