Tutorial Prático: Como Fazer Web Scraping com Python e Selenium Passo a Passo

Última atualização em January 23, 2026

A web evoluiu demais nos últimos tempos. Hoje, praticamente todo site que a gente acessa é cheio de JavaScript, carregando informações de forma dinâmica — tipo aquela rolagem infinita, pop-ups chatos e painéis que só mostram os dados depois de alguma ação. Para você ter uma ideia, incríveis , ou seja, as ferramentas antigas de raspagem que só leem HTML estático acabam deixando passar muita coisa importante. Se você já tentou extrair preços de produtos em um e-commerce moderno ou pegar anúncios de imóveis em mapas interativos, sabe bem a frustração: o dado que você quer simplesmente não aparece no código-fonte.

É aí que entra o Selenium. Depois de anos mexendo com automações (e raspando muitos sites), posso garantir: saber usar o Selenium faz toda a diferença para quem precisa de dados atualizados e dinâmicos. Neste tutorial prático de raspagem com selenium, vou te mostrar o passo a passo — desde a configuração até a automação — e como integrar o Selenium ao para organizar e exportar seus dados sem dor de cabeça. Seja você analista de negócios, do time de vendas ou só um fã de Python, vai sair daqui com habilidades práticas (e algumas risadas, porque depurar XPath é quase um teste de paciência).

O que é Selenium e por que usar para raspagem web?

selenium-dynamic-vs-static-web-scraping.png Vamos começar do começo. é uma ferramenta open-source que permite controlar um navegador de verdade — tipo Chrome ou Firefox — via código. Imagina um robô que abre páginas, clica em botões, preenche formulários, rola a tela e até executa JavaScript, igualzinho a um usuário comum. Isso faz toda a diferença, porque a maioria dos sites modernos só mostra os dados depois de alguma interação ou carregamento dinâmico.

Por que isso é importante para raspagem? Ferramentas tradicionais como BeautifulSoup ou Scrapy são ótimas para HTML estático, mas não conseguem acessar nada que seja carregado via JavaScript depois que a página abre. Já o Selenium interage com a página em tempo real, sendo perfeito para:

  • Raspagem de listas de produtos que só aparecem depois de clicar em “Carregar mais”
  • Captura de preços ou avaliações que mudam dinamicamente
  • Navegação por formulários de login, pop-ups ou rolagem infinita
  • Extração de dados de dashboards, mapas ou outros elementos interativos

Resumindo: Selenium é a escolha certa quando você precisa de dados que só aparecem depois que a página está totalmente carregada — ou após alguma ação do usuário.

Principais Etapas para raspagem com selenium em Python

O tutorial de raspagem web com selenium pode ser resumido em três passos principais:

EtapaO que FazerPor que é Importante
1. Configuração do AmbienteInstale Selenium, WebDriver e bibliotecas PythonPrepare suas ferramentas e evite dor de cabeça
2. Localização de ElementosEncontre os dados usando IDs, classes, XPath etc.Mire nas informações certas, mesmo que estejam escondidas pelo JavaScript
3. Extração e Salvamento dos DadosExtraia textos, links ou tabelas e salve em CSV/ExcelTransforme dados brutos em algo útil

Vamos detalhar cada etapa com exemplos práticos e códigos prontos para você adaptar e mostrar para a galera.

Etapa 1: Configurando o ambiente Python com Selenium

Primeiro, você precisa instalar o Selenium e um driver de navegador (tipo o ChromeDriver para o Chrome). A boa notícia? Hoje em dia está mais fácil do que nunca.

Instalando o Selenium

Abra o terminal e rode:

1pip install selenium

Baixando o WebDriver

  • Chrome: Baixe o (baixe a versão que bate com seu Chrome).
  • Firefox: Baixe o .

Dica: A partir do Selenium 4.6+, você pode usar o Selenium Manager para baixar drivers automaticamente, sem precisar mexer em variáveis de ambiente ().

Seu primeiro script com Selenium

Olha só um exemplo básico de “olá mundo” com Selenium:

1from selenium import webdriver
2driver = webdriver.Chrome()  # Ou webdriver.Firefox()
3driver.get("https://example.com")
4print(driver.title)
5driver.quit()

Dicas para resolver problemas:

  • Se aparecer erro de “driver não encontrado”, confira o PATH ou use o Selenium Manager.
  • Veja se as versões do navegador e do driver estão batendo.
  • Se estiver rodando em servidor sem interface gráfica, veja as dicas de modo headless mais abaixo.

Etapa 2: Localizando elementos na página para extrair dados

Agora vem a parte divertida: dizer ao Selenium quais dados você quer. Os sites são feitos de elementos — divs, spans, tabelas, etc. — e o Selenium tem várias formas de encontrá-los.

Estratégias comuns de localização

  • By.ID: Busca pelo ID único
  • By.CLASS_NAME: Busca por classe CSS
  • By.XPATH: Usa expressões XPath (bem flexível, mas pode ser frágil)
  • By.CSS_SELECTOR: Usa seletores CSS (ótimo para buscas mais complexas)

Veja exemplos de uso:

1from selenium.webdriver.common.by import By
2# Buscar por ID
3preco = driver.find_element(By.ID, "price").text
4# Buscar por XPath
5titulo = driver.find_element(By.XPATH, "//h1").text
6# Buscar todas as imagens de produtos por seletor CSS
7imagens = driver.find_elements(By.CSS_SELECTOR, ".product img")
8for img in imagens:
9    print(img.get_attribute("src"))

Dica: Sempre prefira o localizador mais simples e estável (ID > classe > CSS > XPath). E se a página demorar para carregar os dados, use “esperas explícitas”:

1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3wait = WebDriverWait(driver, 10)
4preco_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))

Assim, seu script não quebra se o dado demorar para aparecer.

Etapa 3: Extraindo e salvando os dados

Depois de localizar os elementos, é hora de capturar as informações e salvar em um formato útil.

Exemplo de raspagem de uma tabela de produtos:

1dados = []
2linhas = driver.find_elements(By.XPATH, "//table/tbody/tr")
3for linha in linhas:
4    celulas = linha.find_elements(By.TAG_NAME, "td")
5    dados.append([celula.text for celula in celulas])

Salvando em CSV com Pandas

1import pandas as pd
2df = pd.DataFrame(dados, columns=["Nome", "Preço", "Estoque"])
3df.to_csv("produtos.csv", index=False)

Você também pode salvar em Excel (df.to_excel("produtos.xlsx")) ou até enviar para o Google Sheets via API.

Exemplo completo: raspando títulos e preços de produtos

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3import pandas as pd
4driver = webdriver.Chrome()
5driver.get("https://example.com/products")
6dados = []
7produtos = driver.find_elements(By.CLASS_NAME, "product-card")
8for p in produtos:
9    titulo = p.find_element(By.CLASS_NAME, "title").text
10    preco = p.find_element(By.CLASS_NAME, "price").text
11    dados.append([titulo, preco])
12driver.quit()
13df = pd.DataFrame(dados, columns=["Título", "Preço"])
14df.to_csv("produtos.csv", index=False)

Selenium vs. BeautifulSoup e Scrapy: o que muda?

selenium-vs-traditional-scrapers-comparison.png Vamos deixar claro: quando usar Selenium e quando BeautifulSoup ou Scrapy são melhores? Olha só a comparação:

FerramentaMelhor paraLida com JavaScript?Velocidade e Consumo
SeleniumSites dinâmicos/interativosSimMais lento, usa mais memória
BeautifulSoupRaspagem de HTML estático simplesNãoMuito rápido, leve
ScrapyRaspagem em larga escalaLimitado*Super rápido, baixo consumo
ThunderbitRaspagem sem código para negóciosSim (IA)Rápido para tarefas médias

*Scrapy até consegue lidar com algum conteúdo dinâmico via plugins, mas não é o forte dele ().

Quando usar Selenium:

  • O dado só aparece depois de clicar, rolar ou fazer login
  • Você precisa interagir com pop-ups, rolagem infinita ou dashboards dinâmicos
  • Ferramentas estáticas não resolvem seu problema

Quando usar BeautifulSoup/Scrapy:

  • O dado já está no HTML inicial
  • Você precisa raspar milhares de páginas rapidinho
  • Quer consumir poucos recursos

E se quiser fugir do código, o permite raspar sites dinâmicos com IA — só clicar em “IA Sugerir Campos” e exportar para Sheets, Notion ou Airtable. (Mais sobre isso já já.)

Automatizando tarefas de raspagem com selenium e Python

Vamos ser sinceros: ninguém quer acordar de madrugada para rodar script de raspagem. A boa notícia é que dá para automatizar tudo usando bibliotecas de agendamento do Python ou o agendador do seu sistema (cron no Linux/Mac ou Agendador de Tarefas no Windows).

Usando a biblioteca schedule

1import schedule
2import time
3def tarefa():
4    # Seu código de raspagem aqui
5    print("Raspando...")
6schedule.every().day.at("09:00").do(tarefa)
7while True:
8    schedule.run_pending()
9    time.sleep(1)

Ou com Cron (Linux/Mac)

Adicione ao seu crontab para rodar a cada hora:

10 * * * * python /caminho/para/seu_script.py

Dicas para automação:

  • Rode o Selenium em modo headless (veja abaixo) para não abrir janelas do navegador.
  • Registre erros e envie alertas se algo der errado.
  • Sempre feche o navegador com driver.quit() para liberar recursos.

Como deixar a raspagem com selenium mais rápida e estável

O Selenium é poderoso, mas pode ser lento e pesado se não for bem configurado. Veja como turbinar seu python selenium raspador de sites:

1. Use o modo headless

Não precisa ver o Chrome abrindo e fechando toda hora. O modo headless roda o navegador em segundo plano:

1from selenium.webdriver.chrome.options import Options
2opts = Options()
3opts.headless = True
4driver = webdriver.Chrome(options=opts)

2. Bloqueie imagens e outros recursos desnecessários

Se você só quer texto, bloqueie imagens para acelerar o carregamento:

1prefs = {"profile.managed_default_content_settings.images": 2}
2opts.add_experimental_option("prefs", prefs)

3. Use localizadores eficientes

  • Prefira IDs ou seletores CSS simples a XPaths complicados.
  • Evite time.sleep() — use esperas explícitas (WebDriverWait).

4. Aleatorize os delays

Adicione pausas aleatórias para simular navegação humana e evitar bloqueios:

1import random, time
2time.sleep(random.uniform(1, 3))

5. Altere User Agents e IPs (se precisar)

Se for raspar muito, alterne o user agent e use proxies para evitar bloqueios simples.

6. Gerencie sessões e erros

  • Use try/except para lidar com elementos ausentes sem travar o script.
  • Registre erros e tire screenshots para depuração.

Para mais dicas de otimização, confira o .

Avançado: Integrando Selenium com Thunderbit para exportar dados organizados

Aqui o negócio fica ainda mais interessante — principalmente se você quer economizar tempo limpando e exportando dados.

Depois de raspar os dados brutos com Selenium, você pode usar o para:

  • Detectar campos automaticamente: A IA do Thunderbit lê suas páginas ou CSVs e sugere nomes de colunas (“IA Sugerir Campos”).
  • Raspagem de subpáginas: Se você tem uma lista de URLs (tipo páginas de produtos), o Thunderbit visita cada uma e enriquece sua tabela com mais detalhes — sem código extra.
  • Enriquecimento de dados: Traduza, categorize ou analise dados em tempo real.
  • Exportação fácil: Exporte com um clique para Google Sheets, Airtable, Notion, CSV ou Excel.

Exemplo de fluxo:

  1. Use o Selenium para raspar uma lista de URLs e títulos de produtos.
  2. Exporte os dados para CSV.
  3. Abra o Thunderbit, importe o CSV e deixe a IA sugerir os campos.
  4. Use a raspagem de subpáginas do Thunderbit para buscar mais detalhes (tipo imagens ou especificações) de cada URL.
  5. Exporte o conjunto final, já estruturado, para Sheets ou Notion.

Essa combinação economiza horas de trabalho manual e deixa você livre para analisar os dados, não para ficar limpando planilha. Para saber mais sobre esse fluxo, veja o .

Boas práticas e solução de problemas em raspagem com selenium

Fazer raspagem com selenium é tipo pescar: às vezes você pega um peixão, às vezes só se enrola na linha. Veja como manter seus scripts confiáveis — e dentro das regras:

Boas práticas

  • Respeite o robots.txt e os termos do site: Sempre confira se a raspagem é permitida.
  • Controle a frequência dos acessos: Não sobrecarregue os servidores — adicione delays e fique de olho em erros HTTP 429.
  • Prefira APIs quando disponíveis: Se o dado é público via API, use-a — é mais seguro e estável.
  • Raspe só dados públicos: Evite informações pessoais ou sensíveis e respeite as leis de privacidade.
  • Gerencie pop-ups e CAPTCHAs: Use o Selenium para fechar pop-ups, mas CAPTCHAs são difíceis de automatizar.
  • Altere user agents e delays: Ajuda a evitar bloqueios e detecção.

Erros comuns e como resolver

ErroO que SignificaComo Resolver
NoSuchElementExceptionElemento não encontradoRevise o localizador; use esperas
Erros de timeoutPágina ou elemento demorou demaisAumente o tempo de espera; verifique a conexão
Incompatibilidade driver/navegadorSelenium não consegue abrir o navegadorAtualize driver e navegador
Sessão travadaNavegador fechou inesperadamenteUse modo headless; gerencie recursos

Para mais dicas de solução de problemas, veja o .

Conclusão & principais aprendizados

A raspagem de sites dinâmicos não é mais só para dev avançado. Com Python e Selenium, você automatiza qualquer navegador, interage com sites cheios de JavaScript e extrai os dados que seu negócio precisa — seja para vendas, pesquisa ou pura curiosidade. Lembre-se:

  • Selenium é a melhor opção para sites dinâmicos e interativos.
  • As três etapas-chave: configurar, localizar, extrair e salvar.
  • Automatize seus scripts para manter os dados sempre atualizados.
  • Otimize para velocidade e estabilidade usando modo headless, esperas inteligentes e localizadores eficientes.
  • Combine Selenium com Thunderbit para estruturar e exportar dados facilmente — sem dor de cabeça com planilhas.

Pronto para colocar a mão na massa? Comece com os exemplos acima e, quando quiser elevar o nível da sua raspagem, experimente o para limpeza e exportação de dados com IA. E se quiser se aprofundar, confira o para tutoriais, novidades e dicas de automação web.

Boas raspagens — e que seus seletores sempre encontrem o que você procura.

Experimente o Raspador Web IA Thunderbit Grátis

Perguntas Frequentes

1. Por que usar Selenium para raspagem web em vez de BeautifulSoup ou Scrapy?
O Selenium é ideal para raspar sites dinâmicos, onde o conteúdo só aparece depois de ações do usuário ou execução de JavaScript. BeautifulSoup e Scrapy são mais rápidos para HTML estático, mas não conseguem interagir com elementos dinâmicos ou simular cliques e rolagens.

2. Como deixar meu raspador Selenium mais rápido?
Use o modo headless, bloqueie imagens e recursos desnecessários, utilize localizadores eficientes e adicione delays aleatórios para simular navegação humana. Veja mais dicas no .

3. Posso agendar tarefas de raspagem Selenium para rodar automaticamente?
Sim! Use a biblioteca schedule do Python ou o agendador do seu sistema (cron ou Agendador de Tarefas) para rodar scripts em horários definidos. Automatizar a raspagem ajuda a manter os dados sempre atualizados.

4. Qual a melhor forma de exportar dados raspados com Selenium?
Use o Pandas para salvar em CSV ou Excel. Para exportações mais avançadas (Google Sheets, Notion, Airtable), importe seus dados no e use os recursos de exportação com um clique.

5. Como lidar com pop-ups e CAPTCHAs no Selenium?
Você pode fechar pop-ups localizando e clicando no botão de fechar. CAPTCHAs são bem mais difíceis — se encontrar um, considere uma solução manual ou serviço de resolução de captcha, e sempre respeite os termos de uso do site.

Quer ver mais tutoriais de raspagem, dicas de automação com IA ou ficar por dentro das novidades em ferramentas de dados para negócios? Assine o ou confira nosso para demonstrações práticas.

Saiba mais

Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Raspagem com seleniumTutorial de raspagem web com SeleniumPython selenium raspador de sites
Índice

Experimente o Thunderbit

Capture leads e outros dados em apenas 2 cliques. Impulsionado por IA.

Obter Thunderbit É grátis
Extraia Dados com IA
Transfira dados facilmente para Google Sheets, Airtable ou Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week