Skip to content

surocham/Desafio_He4rt_Data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio Técnico — Web Scraping com Selenium

Introdução

Este desafio tem como objetivo explorar técnicas de web scraping utilizando Selenium WebDriver para extrair e estruturar dados públicos provenientes de portais de transparência de prefeituras brasileiras.

O projeto simula um cenário real de trabalho em ciência de dados e engenharia de dados: antes de realizar qualquer análise, é necessário coletar, estruturar e tratar os dados brutos.

Cada participante deverá desenvolver um scraper capaz de navegar em um portal de transparência municipal, extrair dados relevantes e organizá-los em uma tabela estruturada pronta para análise.

Os dados coletados serão posteriormente utilizados em uma live técnica, onde serão exploradas técnicas analíticas de ciência de dados sobre a base construída pelos participantes.

✅ Objetivos alcançados

• Qual portal foi utilizado?

O portal usado foi: IPREM - Folha de Pagamento - 2025 da Prefeitura de São Paulo URL

• Qual município foi analisado?

São Paulo

• Quais dados foram coletados

Folha de pagamento IPREM

• Como executar o scraper

python script.py

• Estrutura do dataset final

    empresa mes   ano                            nome              cargo  ... nascimento vencimentos  encargos  beneficios  total_remuneracao
0   IPREM   1  2025  MARIA LENALDA DOS SANTOS SILVA  CHEFE DE EQUIPE I  ...       1978    11628.65   8146.02      841.22           20615.89
1   IPREM   1  2025        VANESSA SILVEIRA PAULINO         ASSESSOR I  ...       1985     8803.92   1619.64     1323.32           11746.88
2   IPREM   1  2025      CARLOS RIBEIRO DE OLIVEIRA        ASSESSOR II  ...       1961    49120.67   9146.59      616.88           58884.14
3   IPREM   1  2025       MARIA CHRISTINA COSENTINO          DIRETOR I  ...       1977     9869.63   2171.32      532.83           12573.78
4   IPREM   1  2025       MARINA SIMOES DE OLIVEIRA  CHEFE DE NUCLEO I  ...       1991     7350.31   1617.07     1121.68           10089.06

⏳ Processo

Todo o processo levou um tempo de 3 dias completos.

  • Isso porque eu não fazia a menor ideia de como usar selenium. Foi a minha primeira vez fazendo uma automação pra extração de dados e etl.

Primeiro de tudo:

Iniciei procurando o site do selenium e como fazia a instalação.

https://selenium-python.readthedocs.io/installation.html

Então instalei o pacote do selenium no ambiente que criei através do conda (selenium venv).

alt text

Utilizei os seguintes comandos:

conda env list
- pra verificar os envs que tenho

conda init
- pra iniciar o conda

conda activate selenium
- ativando o env do selenium
  • Verifiquei o driver que vai utilizar o navegador através do script em python

https://sites.google.com/chromium.org/driver/

Precisei instalar o Chrome

Baixe o Chrome clicando aqui ok?!

alt text

  • Verifiquei a versão do Chrome para ser compatível com o webdriver do selenium

  • Baixei e coloquei na mesma pasta

  • Agora vou criar o script.py que é onde ficará o código

Eu tava fazendo assim mas percebi que no win isso é loucurinha então consultei os universitário e decidi fazer com o docker.

  • Então o que eu fiz foi entrar no Hub do Docker e puxar o comando pro Selenium Standalone Chrome Nightly Uma versão que funciona no modo noturno e contém as últimas alterações do Selenium podendo conter também bugs.
docker pull selenium/standalone-chrome:nightly
  • Mas para que eu visualize isso eu preciso fazer com que ele abra em uma porta
docker run -p 4444:4444  selenium/standalone-chrome:nightly
  • Nesse comando eu falo pra ele abrir na porta 4444 então eu digito na barra de navegação: localhost:4444 e ele abre essa tela

alt text

Agora para buscar os dados da fonte
é necessário identificar os elementos da página

E aqui não vou negar, usei IA pra identificar os elementos. A IA que usei foi o Calude.AI e basicamente eu baixei a página em HTML e pedi pra me ajudar a identificar corretamente os elementos onde estavam os meus dados.

Então os meus dados estavam em um iframe que demorava um pouco pra carregar, precisei colocar a automação pra esperar até pudesse scrollar a página e extrair os dados corretamente.

No código tá tudo bem comentado.

Utilizei as seguintes bibliotecas:

  • pandas

    • importa o pandas para manipular os dados
  • selenium

    • importa o selenium para controlar o navegador
  • sleep

    • importa o sleep para fazer pausas

E após extrair os dados corretamente fiz a limpeza dos dados, corrigi os caracteres que geralmente bugam e corrigi os tipos.

E então salvei em arquivo CSV.

Foi bastante coisa que pude aprender. A Cherry me ajudou com o docker. Inicialmente penei muito pra fazer tudo funcionar e assisti alguns vídeos que me ajudaram a entender como tudo funciona:

E também li esse artigo:

No mais, acredito ter alcançado o objetivo do desafio.

Conclusão

Os dados extraídos foram esses, visualizados no excel. alt text

About

Desafio He4rt Data

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages