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.
• 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.06Todo 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).
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?!
-
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
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:
- Como Pegar Dados Da Internet Com Python e Selenium
- Selenium com Python #15 - Selenium Docker [HQ]
- Como Varrer Dados de Qualquer Site com Python - [RÁPIDO]
E também li esse artigo:
No mais, acredito ter alcançado o objetivo do desafio.



