image

Bootcamps ilimitados + curso de inglés para sempre

80
%OFF
Article image
Alex Silva
Alex Silva19/04/2025 13:46
Compartir
Microsoft Certification Challenge #3 DP-100Recomendado para tiMicrosoft Certification Challenge #3 DP-100

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

  1. Acessar a tabela principal da Wikipedia
  • A tabela contém os dados dos jogadores, como posição, nome, estado e votos.
  1. 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.
  1. 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.
  1. Exportar tudo para CSV
  • Geramos um arquivo jogadores.csv com os dados estruturados.
  1. 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 .gitignore corretamente).
  • 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

Compartir
Recomendado para ti
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentarios (1)
Carlos Barbosa
Carlos Barbosa - 19/04/2025 17:24

Interessantíssimo!! Belo artigo!! 🚀

Recomendado para tiMicrosoft Certification Challenge #3 DP-100