Web Scraping com Selenium e Python | Resolvendo Captcha Ao Fazer Web Scraping

Anh Tuan
Data Science Expert
04-Dec-2025

Imagine que você pode obter facilmente todos os dados que precisa da Internet sem ter que navegar manualmente pelo site ou copiar e colar. Essa é a beleza da raspagem de web. Seja você um analista de dados, pesquisador de mercado ou desenvolvedor, a raspagem de web abre um novo mundo de coleta de dados automatizada.
Nessa era orientada por dados, a informação é poder. No entanto, extrair informações manualmente de centenas ou até milhares de páginas da web não é apenas trabalhoso, mas também propenso a erros. Felizmente, a raspagem de web oferece uma solução eficiente e precisa que permite automatizar o processo de extração de dados da Internet, aumentando assim significativamente a eficiência e a qualidade dos dados.
Índice
- O que é raspagem de web?
- Começando com o Selenium
- Como contornar proteções contra raspagem
- Conclusão
O que é raspagem de web?
A raspagem de web é uma técnica para extrair informações de páginas da web automaticamente escrevendo programas. Essa tecnologia tem uma ampla gama de aplicações em vários campos, incluindo análise de dados, pesquisa de mercado, inteligência competitiva, agregação de conteúdo e muito mais. Com a raspagem de web, você pode coletar e consolidar dados de um grande número de páginas da web em um curto período de tempo, em vez de depender de operações manuais.
O processo de raspagem de web geralmente inclui os seguintes passos:
- Enviar requisição HTTP: Enviar programaticamente uma requisição para o site alvo para obter o código HTML da página da web. Ferramentas comuns como a biblioteca requests do Python podem fazer isso facilmente.
- Analisar o conteúdo HTML: Após obter o código HTML da página, ele precisa ser analisado para extrair os dados necessários. Bibliotecas de análise HTML como BeautifulSoup ou lxml podem ser usadas para processar a estrutura HTML.
- Extração de dados: Com base na estrutura HTML analisada, localize e extraia conteúdo específico, como o título do artigo, informações de preço, links de imagens, etc. Métodos comuns incluem o uso de XPath ou seletores CSS.
- Armazenar dados: Salve os dados extraídos em um meio de armazenamento adequado, como um banco de dados, arquivo CSV ou arquivo JSON, para análise e processamento posterior.
E, ao usar ferramentas como o Selenium, é possível simular a operação do navegador do usuário, contornando algumas das mecanismos anti-robô, permitindo assim completar a tarefa de raspagem de web de forma mais eficiente.
Resgatar seu código de bônus do CapSolver
Aumente seu orçamento de automação instantaneamente!
Use o código de bônus CAPN ao recarregar sua conta do CapSolver para obter um bônus extra de 5% em cada recarga — sem limites.
Resgate-o agora em seu Painel do CapSolver
.
Começando com o Selenium
Vamos usar o ScrapingClub como exemplo e completar o primeiro exercício com o selenium.

Preparação
Primeiro, você precisa garantir que o Python esteja instalado na sua máquina local. Você pode verificar a versão do Python digitando o seguinte comando no seu terminal:
bash
python --version
Certifique-se de que a versão do Python seja maior que 3. Se não estiver instalado ou a versão for muito baixa, baixe a versão mais recente no site oficial do Python. Em seguida, você precisa instalar a biblioteca selenium usando o seguinte comando:
bash
pip install selenium
Importar bibliotecas
python
from selenium import webdriver
Acessando uma página
Usar o Selenium para controlar o Google Chrome para acessar uma página não é complicado. Após inicializar o objeto Chrome Options, você pode usar o método get() para acessar a página alvo:
python
import time
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
time.sleep(5)
driver.quit()
Parâmetros de inicialização
Os parâmetros do Chrome Options podem adicionar muitos parâmetros de inicialização que ajudam a melhorar a eficiência da coleta de dados. Você pode visualizar a lista completa de parâmetros no site oficial: Lista de switches da linha de comando do Chromium. Alguns parâmetros comuns estão listados na tabela abaixo:
| Parâmetro | Propósito |
|---|---|
| --user-agent="" | Definir o User-Agent no cabeçalho da requisição |
| --window-size=xxx,xxx | Definir a resolução do navegador |
| --start-maximized | Executar com resolução maximizada |
| --headless | Executar no modo headless |
| --incognito | Executar no modo anônimo |
| --disable-gpu | Desativar a aceleração de hardware GPU |
Exemplo: Executando no modo headless
python
import time
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
time.sleep(5)
driver.quit()
Localizando elementos da página
Um passo necessário na coleta de dados é encontrar os elementos HTML correspondentes no DOM. O Selenium fornece dois métodos principais para localizar elementos na página:
find_element: Encontra um único elemento que atende aos critérios.find_elements: Encontra todos os elementos que atendem aos critérios.
Ambos os métodos suportam oito maneiras diferentes de localizar elementos HTML:
| Método | Significado | Exemplo HTML | Exemplo do Selenium |
|---|---|---|---|
| By.ID | Localizar pelo ID do elemento | <form id="loginForm">...</form> |
driver.find_element(By.ID, 'loginForm') |
| By.NAME | Localizar pelo nome do elemento | <input name="username" type="text" /> |
driver.find_element(By.NAME, 'username') |
| By.XPATH | Localizar pelo XPath | <p><code>Meu código</code></p> |
driver.find_element(By.XPATH, "//p/code") |
| By.LINK_TEXT | Localizar hiperlink pelo texto | <a href="continue.html">Continuar</a> |
driver.find_element(By.LINK_TEXT, 'Continuar') |
| By.PARTIAL_LINK_TEXT | Localizar hiperlink pelo texto parcial | <a href="continue.html">Continuar</a> |
driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti') |
| By.TAG_NAME | Localizar pelo nome da tag | <h1>Bem-vindo</h1> |
driver.find_element(By.TAG_NAME, 'h1') |
| By.CLASS_NAME | Localizar pelo nome da classe | <p class="content">Bem-vindo</p> |
driver.find_element(By.CLASS_NAME, 'content') |
| By.CSS_SELECTOR | Localizar pelo seletor CSS | <p class="content">Bem-vindo</p> |
driver.find_element(By.CSS_SELECTOR, 'p.content') |
Voltemos à página do ScrapingClub e escreva o seguinte código para encontrar o elemento do botão "Get Started" para o primeiro exercício:

python
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
get_started_button = driver.find_element(By.XPATH, "//div[@class='w-full rounded border'][1]/div[3]")
time.sleep(5)
driver.quit()
Interação com elementos
Uma vez que encontramos o elemento do botão "Get Started", precisamos clicar no botão para entrar na próxima página. Isso envolve interação com elementos. O Selenium fornece vários métodos para simular ações:
click(): Clique no elemento;clear(): Limpe o conteúdo do elemento;send_keys(*value: str): Simule a entrada do teclado;submit(): Submeta um formulário;screenshot(filename): Salve uma captura de tela da página.
Para mais interações, consulte a documentação oficial: API do WebDriver. Vamos continuar a melhorar o código do exercício ScrapingClub adicionando a interação de clique:
python
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
get_started_button = driver.find_element(By.XPATH, "//div[@class='w-full rounded border'][1]/div[3]")
get_started_button.click()
time.sleep(5)
driver.quit()
Extração de dados

Quando chegamos à primeira página do exercício, precisamos coletar informações sobre a imagem do produto, nome, preço e descrição. Podemos usar diferentes métodos para encontrar esses elementos e extraí-los:
python
from selenium import webdriver
from selenium.webdriver.common.by import By
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
get_started_button = driver.find_element(By.XPATH, "//div[@class='w-full rounded border'][1]/div[3]")
get_started_button.click()
product_name = driver.find_element(By.CLASS_NAME, 'card-title').text
product_image = driver.find_element(By.CSS_SELECTOR, '.card-img-top').get_attribute('src')
product_price = driver.find_element(By.XPATH, '//h4').text
product_description = driver.find_element(By.CSS_SELECTOR, '.card-description').text
print(f'Nome do produto: {product_name}')
print(f'Imagem do produto: {product_image}')
print(f'Preço do produto: {product_price}')
print(f'Descrição do produto: {product_description}')
driver.quit()
O código imprimirá o seguinte conteúdo:
Nome do produto: Long-sleeved Jersey Top
Imagem do produto: https://scrapingclub.com/static/img/73840-Q.jpg
Preço do produto: $12.99
Descrição do produto: CONSCIOUS. Camiseta justa com mangas longas feita de jersey orgânico com gola redonda. 92% algodão, 3% elastano, 3% rayon, 2% poliéster.
Aguardando o carregamento dos elementos
Às vezes, devido a problemas de rede ou outros motivos, os elementos podem não estar carregados quando o Selenium termina de executar, o que pode causar falhas na coleta de dados. Para resolver esse problema, podemos configurar para esperar até que um determinado elemento esteja totalmente carregado antes de prosseguir com a extração de dados. Aqui está um exemplo de código:
python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://scrapingclub.com/')
get_started_button = driver.find_element(By.XPATH, "//div[@class='w-full rounded border'][1]/div[3]")
get_started_button.click()
# aguardando o carregamento completo dos elementos de imagem do produto
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.card-img-top')))
product_name = driver.find_element(By.CLASS_NAME, 'card-title').text
product_image = driver.find_element(By.CSS_SELECTOR, '.card-img-top').get_attribute('src')
product_price = driver.find_element(By.XPATH, '//h4').text
product_description = driver.find_element(By.CSS_SELECTOR, '.card-description').text
print(f'Nome do produto: {product_name}')
print(f'Imagem do produto: {product_image}')
print(f'Preço do produto: {product_price}')
print(f'Descrição do produto: {product_description}')
driver.quit()
Como contornar proteções contra raspagem
O exercício do ScrapingClub é fácil de ser concluído. No entanto, em cenários reais de coleta de dados, obter dados não é tão fácil, pois alguns sites utilizam técnicas de proteção contra raspagem que podem detectar seu script como um robô e bloquear a coleta. A situação mais comum é o desafio de captcha

Resolver esses desafios de captcha requer experiência extensa em aprendizado de máquina, engenharia reversa e medidas de contramedida contra impressão digital do navegador, o que pode levar muito tempo. Felizmente, agora você não precisa fazer todo esse trabalho sozinho. CapSolver fornece uma solução completa para ajudá-lo a contornar facilmente todos os desafios. CapSolver oferece extensões do navegador que podem resolver automaticamente os desafios de captcha enquanto usa o Selenium para coletar dados. Além disso, eles fornecem métodos de API para resolver captchas e obter tokens, tudo isso pode ser feito em alguns segundos. Consulte a Documentação do CapSolver para mais informações.
Conclusão
Da extração de detalhes de produtos à navegação por medidas complexas de proteção contra raspagem, a raspagem de web com o Selenium abre portas para um vasto reino de coleta de dados automatizada. À medida que navegamos pelo constante cenário em evolução da web, ferramentas como CapSolver pavimentam o caminho para uma extração de dados mais suave, tornando desafios antes formidáveis coisa do passado. Então, seja você um entusiasta de dados ou um desenvolvedor experiente, utilizar essas tecnologias não apenas aumenta a eficiência, mas também abre um mundo onde insights baseados em dados estão a apenas um escaneio de distância.
Perguntas Frequentes
1. Para que serve a raspagem de web?
O web scraping é usado para extrair informações automaticamente de páginas da web. Ele permite que desenvolvedores, analistas e empresas coletem dados de produtos, preços, artigos, imagens, avaliações e outras informações online em massa sem cópia manual, aumentando significativamente a eficiência e a precisão dos dados.
2. Por que usar o Selenium para web scraping em vez do requests ou do BeautifulSoup?
O requests e o BeautifulSoup funcionam bem para páginas web estáticas, mas muitos sites modernos usam JavaScript para carregar conteúdo. O Selenium simula um navegador real, permitindo que você raspe páginas dinâmicas, clique em botões, role, interaja com elementos e burlar medidas simples de anti-raspagem, tornando-o ideal para cenários complexos.
3. O Selenium pode raspar sites que exigem login ou ações do usuário?
Sim. O Selenium pode realizar interações como clicar em botões, digitar texto, navegar por páginas e gerenciar cookies ou sessões, tornando-o adequado para raspar páginas protegidas por formulários de login ou fluxos de trabalho do usuário.
4. Como lidar com CAPTCHAs ao raspar dados?
CAPTCHAs são um mecanismo comum contra bots que podem interromper os scripts do Selenium. Em vez de resolvê-los manualmente, você pode integrar soluções como CapSolver, que oferece resolução automática de CAPTCHA via API ou extensão de navegador para manter o processo de raspagem sem interrupções.
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Web Scraping com Selenium e Python | Resolvendo Captcha Ao Fazer Web Scraping
Neste artigo, você vai se familiarizar com a raspagem de dados da web usando o Selenium e o Python, e aprender a resolver o Captcha envolvido no processo para uma extração de dados eficiente.

Anh Tuan
04-Dec-2025

Web Scraping em Golang com Colly
Neste blog, exploramos o mundo da raspagem de web usando a biblioteca Colly em Golang. O guia começa ajudando você a configurar seu projeto Golang e instalar o pacote Colly. Em seguida, percorreremos a criação de um raspador básico para extrair links de uma página da Wikipedia, demonstrando a facilidade de uso e os recursos poderosos do Colly.

Adélia Cruz
04-Dec-2025

O que é Web Scraping | Casos de uso comuns e problemas
Conheça o web scraping: aprenda seus benefícios, resolva desafios com facilidade e impulso seu negócio com o CapSolver.

Ethan Collins
03-Dec-2025

O que é o Puppeteer e como usá-lo em web scraping | Guia Completo 2026
Este guia completo vai explorar o que é o Puppeteer e como usá-lo de forma eficaz na raspagem de web.

Nikolai Smirnov
03-Dec-2025

Como Fazer um Scraper de Web com Agente de IA (Guia Amigável para Iniciantes)
Aprenda como criar um raspador de web de agente de IA do zero com este tutorial amigável para iniciantes. Descubra os componentes principais, exemplos de código e como burlar medidas anti-bot como os CAPTCHAs para coleta de dados confiável.

Adélia Cruz
02-Dec-2025

Como integrar a resolução de CAPTCHA no seu fluxo de trabalho de raspagem com IA
Domine a integração de serviços de resolução de CAPTCHA no seu fluxo de trabalho de scraping com IA. Aprenda melhores práticas para reCAPTCHA v3, Cloudflare e AWS WAF para garantir uma coleta de dados confiável e em grande volume.

Adélia Cruz
28-Nov-2025


.