Estou tentando descobrir quais são os atletas olímpicos do estado do Paraná. Dentro do site do Comitê Olímpico Brasileiro (COB) entrei na seção “atletas” (https://www.cob.org.br/pt/cob/time-brasil/atletas). Ao perceber como os dados estavam organizados, vi que daria pra usar o Webscraper. Consegui fazer uma tabela com os nomes dos(as) atletas, a modalidade e a foto de cada um(a) (bem semelhante ao exercício da AMAZON, no curso de DADOS 360).
No entanto, o dado “local de nascimento” de cada esportista só é possível saber quando clicamos na imagem deles. Minha dúvida é: Como faço para que o webscraper raspe os elementos de uma página e também um dado que está dentro de um link em cada um dos elementos?
No vídeo do exercício da AMAZON, no curso DADOS 360, o Adriano comenta que um dos seletores do webscraper é o “Element click”. Fiquei imaginando que talvez a solução fosse por esse caminho, porém não consegui avançar.
@Talita dá uma olhada em como funciona o seletor ‘Link selector’. Em uma tradução livre da documentação oficial aqui:
O seletor de links é usado para selecionar links e navegar nos sites. Se você usar o seletor ‘Link Selector’ sem nenhum seletor “filho” então ele irá extrair o link (URL) e o atributo ‘href’ do link. Se você adicionar seletores filhos para o ‘Link selector’ então estes seletores filhos serão utilizados na página que o link está apontando.
Não consegui importar seu sitemap, mas ao que parece falta apenas você criar o ‘Link selector’ apontando onde está o link de cada caixa para em seguida, entrar na página de um perfil, e criar um novo seletor de texto que aponte para o texto da ficha técnica. Fiz um teste aqui com este sitemap e parece que atende o que você busca. Dá uma olhada aí:
Eu não tenho prática com a extensão Webscraper, mas fiz um código no R que faz isso que você deseja. Só não ficou perfeito porque o site não tem os dados referentes a alguns atletas.
Se você tiver interesse, é só rodar o código abaixo no RStudio ou baixar o CSV no link abaixo:
# instalação do pacote
install.packages("tidyverse")
# leitura do pacote
library(tidyverse)
i <- 1:16 # número de páginas com atletas
list_url <- paste0("http://www.cob.org.br/pt/cob/time-brasil/atletas?&page=", i)
# função para pegar todos os links de atletas dentro da lista de url
pegar_url <- function(x){
url[x] %>%
read_html() %>%
html_nodes("a") %>%
html_attr("href") %>%
as.data.frame() %>%
rename("link" = ".") %>%
filter(str_detect(link, "time-brasil/atletas/")) %>%
mutate(link = str_replace_all(link, "https", "http"))
}
all_url <- map_dfr(1:length(list_url), pegar_url)
# função para pegar todas as informações de atletas dentro de cada link
pegar_info <- function(x){
as.character(all_url$link[x]) %>%
read_html() %>%
html_node("div.card-body") %>%
html_node("p") %>%
html_text() %>%
as.data.frame() %>%
rename("conteudo" = ".") %>%
mutate(link = all_url$link[x],
conteudo = str_remove_all(conteudo, " ")) %>%
separate(conteudo, c("nome_completo", "data_de_nascimento", "local_de_nascimento"), sep = "\r\n\r\n") %>%
mutate(nome_completo = str_remove_all(nome_completo, "Nome completo: "),
data_de_nascimento = str_remove_all(data_de_nascimento, "Data de nascimento: "),
local_de_nascimento = str_remove_all(local_de_nascimento, "Local de nascimento: "))
}
all_info <- map_dfr(1:length(all_url$link), pegar_info)
# download do csv com as informações de atletas
write.csv(all_info, "dados_dos_atletas_COB.csv")