Saltar para o conteúdo principal
Ferramentas Python2026-07-29 · 10 min de leitura

Python Web Scraping em 2026: httpx + BeautifulSoup + Playwright - Quando usar qual

A maioria dos tutoriais de "Python web scraping" de 2018 ainda recomenda requests + BeautifulSoup. A parte requests é boa, mas agora existem padrões melhores, e metade da web moderna renderiza conteúdo em JavaScript, então a pilha clássica retorna silenciosamente páginas vazias.

Este guia cobre a árvore de decisão de 2026: quando httpx + BeautifulSoup está certo (ainda mais de 90% dos sites), quando recorrer ao Playwright, como evitar ser bloqueado e as duas regras que mantêm seu scraper legal e ético.

A árvore de decisão em uma imagem

▶ PYTHONeditable · runs in your browser

É isso. Noventa por cento das tarefas de scraping são HTML estático – a pilha clássica (renomeada) é a ferramenta certa. O resto precisa de execução JS e o Playwright é a resposta moderna.

Etapa 1: httpx + BeautifulSoup (o caso de 90%)

httpx é o substituto imediato para requests. Mesma API, mais suporte HTTP/2 e assíncrono nativo. BeautifulSoup permanece inalterado desde 2015 — a escolha do analisador é importante (lxml é 5x mais rápido que o padrão).

▶ PYTHONeditable · runs in your browser

Principais escolhas:

  • `headers={"User-Agent": ...}` — sempre defina um UA real (um endereço de contato é educado). O UA httpx padrão costuma ser bloqueado.
  • `timeout=10` — nunca faça uma solicitação ilimitada; conexões interrompidas vazam descritores de arquivo.
  • `raise_for_status()` — aumenta em 4xx/5xx para que as falhas sejam altas, não silenciosas.
  • Analisador `"lxml"` — 5x mais rápido que o html.parser padrão e mais indulgente com HTML malformado.
  • `soup.select("css-selector")` — trate scraping como "finja que você está usando document.querySelectorAll de JavaScript". Os seletores CSS geralmente são o que você deseja, não a API de caminhada em árvore.

Etapa 2: Dramaturgo (quando JS renderiza o conteúdo)

Muitos SPAs modernos (React, Vue, Angular) enviam um <div id="root"> vazio e hidratam tudo do lado do cliente. httpx.get fornece um shell vazio - os dados que você deseja são carregados via fetch após o carregamento da página.

Teste: httpx.get(url).text — pesquise os dados desejados. Se não estiver lá, o site precisa de execução JS.

▶ PYTHONeditable · runs in your browser

Instale: pip install playwright && playwright install chromium (o download do navegador é de aproximadamente 150 MB - vale a pena uma vez, doloroso em cada CI executado sem cache).

Custo: o Playwright é 10-50x mais lento que httpx (carregamento da página + execução JS + sobrecarga do navegador). Alcance-o apenas quando os dados não estiverem no HTML estático.

As quatro maneiras de ser bloqueado

A maioria dos sistemas anti-raspagem observa estas quatro impressões digitais:

1. Agente de usuário ausente/óbvio

▶ PYTHONeditable · runs in your browser

2. Sem atraso entre solicitações

Solicitações sequenciais brutas martelam um servidor. Adicione um atraso proporcional ao tempo de resposta – se uma página levar 500 ms para ser veiculada, espere 500-2.000 ms entre as solicitações. asyncio.sleep(random.uniform(0.5, 2.0)).

3. Solicitando caminhos não permitidos /robots.txt

Alguns sites usam robots.txt para sinais de taxas legítimas - verifique antes de copiar:

▶ PYTHONeditable · runs in your browser

4. Incompatibilidade de impressão digital de TLS/navegador

Anti-raspagem avançada (Cloudflare, DataDome) imprime impressões digitais em seu handshake TLS e ambiente JS. httpx não se parece em nada com o Chrome na camada TLS. Opções:

  • curl_cffi — uma biblioteca baseada em curl-impersonate que imita o TLS real do navegador.
  • Playwright — navegador real TLS por definição.
  • Rotação de proxies residenciais – a opção nuclear.

Para 99% dos casos de uso (sites não hostis, volume moderado, sem necessidade de login), o respeito httpx + UA real + atraso + robots.txt é suficiente. Se você estiver explorando sites protegidos pela Cloudflare em grande escala, precisará de navegadores reais ou de serviços de desbloqueio pagos.

Taxa limitando-se (o semáforo + padrão de sono)

Para raspagem em massa, combine asyncio.Semaphore (máximo simultâneo) com asyncio.sleep (atraso por solicitação):

▶ PYTHONeditable · runs in your browser

Limitar o atraso de 5 a 10 simultâneos + 500 ms a 2 s por solicitação mantém você bem abaixo do que aciona alarmes de limite de taxa na maioria dos sites.

Regras legais + éticas

1. Leia os Termos de Serviço do site. Muitos proíbem completamente a raspagem – você ainda pode fazê-lo (os ToS são leis contratuais, não leis criminais na maioria das jurisdições), mas você assume riscos legais. LinkedIn v. hiQ (2022) estabeleceu que a coleta de dados publicamente visíveis não é uma violação da CFAA nos EUA, mas usar um moletom com capuz não o torna invisível.

2. Não raspe dados pessoais. GDPR / CCPA / todo o resto penaliza a coleta de informações pessoais sem consentimento. Se você estiver construindo um conjunto de dados de “funcionários da Empresa X”, pare.

Adições éticas que todos esquecem:

  • Envie um endereço de contato real na sua UA. Se o seu bot causar problemas, o proprietário do site poderá enviar um e-mail para você.
  • Se você armazenar em cache os dados do site, faça um cache agressivo – não acesse seus servidores a cada execução.
  • Prefira APIs públicas mesmo que sejam pagas. Mais barato que o risco legal.

O resumo de ferramentas de 2026

| Tarefa | Alcance |

|---|---|

| Páginas HTML estáticas | httpx + BeautifulSoup(html, "lxml") |

| SPA renderizado em JS | Playwright (cromo sem cabeça) |

| Cloudflare / anti-bot | curl_cffi ou Playwright + proxy residencial |

| Raspagem de alto volume | httpx.AsyncClient + Semáforo + suspensão |

| Dados estruturados de API | httpx.get + .json() — não precisa de sopa |


A raspagem da Web em 2026 ainda é 90% httpx + BeautifulSoup, além de saber quando escalar para um navegador real. Domine os hábitos de raspagem educada (UA real, semáforo, suspensão, robots.txt) e você construirá pipelines de dados duráveis ​​sem ser bloqueado ou processado.

Próxima etapa: o curso Data Science tem 15 lições sobre scraping, ETL e pandas. Você criará um pipeline real de ponta a ponta, desde busca HTTP até DataFrame e exportação CSV.

Pronto para experimentar?

15 aulas gratuitas após uma inscrição gratuita - sem cartão. Experimente a plataforma e depois decida.

Comece gratuitamente →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.