Web Scraping em Paralelo com Rust e Rayon
- #Rust
đŠExtraindo Dados da Wikipedia com Performance
Fala, devs!
Neste artigo, compartilho um projeto pessoal onde combinei Rust, web scraping e paralelismo com Rayon para extrair dados de jogadores brasileiros destacados pela IFFHS diretamente da Wikipedia.
Foi uma excelente oportunidade para explorar a robustez e velocidade do Rust â e entender como usar mĂșltiplas threads de forma simples com a biblioteca Rayon.
đ§ Objetivo
Extrair dados estruturados da seguinte pĂĄgina da Wikipedia:
âMelhores jogadores brasileiros do sĂ©culo XX segundo a IFFHSâ
Coletar, para cada jogador listado:
- đ Posição no ranking
- đ Nome
- đ Estado de nascimento
- đ Total de votos recebidos
- đ A primeira frase da biografia na Wikipedia
Tudo isso sendo processado em paralelo, com foco em performance.
đ ïž Ferramentas e Bibliotecas Utilizadas
- đŠ Rust â linguagem principal do projeto
- âïž Rayon â para paralelismo de maneira simples e eficiente
- đ reqwest â para requisiçÔes HTTP
- đ§č scraper â parser HTML/CSS para extrair dados da pĂĄgina
- đ§Ÿ csv â para exportar os dados extraĂdos
- â±ïž std::time â para medir tempo de execução
đ O Processo
- Acessar a tabela principal da Wikipedia
- A tabela contém os dados dos jogadores, como posição, nome, estado e votos.
- Iterar sobre os nomes e buscar as pĂĄginas individuais na Wikipedia
- Para cada jogador, acessar sua pĂĄgina pessoal e extrair a primeira frase da biografia.
- Usar Rayon para processar em paralelo
- Com
par_iter(), conseguimos lançar mĂșltiplas threads automaticamente, tornando o processo muito mais rĂĄpido que o sequencial.
- Exportar tudo para CSV
- Geramos um arquivo
jogadores.csvcom os dados estruturados.
- Medição de performance
- Ao final, mostramos:
- â±ïž Tempo total de execução
- đ Total de pĂĄginas processadas
- đ Tempo mĂ©dio por pĂĄgina
đ Resultados
A diferença entre o processo sequencial e o paralelo foi perceptĂvel!
Com Rayon, as requisiçÔes e anålises das påginas da Wikipedia ocorreram simultaneamente, reduzindo drasticamente o tempo de execução.
Esse tipo de abordagem Ă© essencial quando lidamos com mĂșltiplas fontes web ou tarefas que podem ser paralelizadas.
đĄ O Que Eu Aprendi
- Como usar Rayon para aplicar paralelismo de forma simples com
par_iter(). - Como combinar web scraping com Rust e bibliotecas modernas.
- Como medir a performance real de uma aplicação em Rust.
- A importĂąncia de evitar vazamento de dados no Git (uso do
.gitignorecorretamente). - Como estruturar um projeto real para extração de dados.
đ Acesse o Projeto
RepositĂłrio completo no GitHub:
đ github.com/alexpaulo100/web-crawling-rayon
đ ConclusĂŁo
Rust continua me surpreendendo pela performance e segurança.
Combinando boas bibliotecas como Rayon, reqwest e scraper, Ă© possĂvel criar soluçÔes de alto desempenho para tarefas como web scraping e processamento de dados.
Se vocĂȘ tambĂ©m curte dados, scraping e Rust â esse projeto pode ser uma Ăłtima inspiração!
Curtiu o projeto? Deixa um feedback ou compartilha sua experiĂȘncia com scraping em Rust nos comentĂĄrios!
AtĂ© a prĂłxima! đ
#RustLang #Rayon #WebScraping #ProjetosComRust #OpenSource #Desenvolvimento #ScrapingComPerformance #DIO





