Tratamento de JavaScript e medidas antirraspagem
Use Playwright/Selenium para conteúdo renderizado por JS e limitação de taxa.
Tratamento de JavaScript e medidas antirraspagem é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Por que JavaScript é importante
Os sites modernos renderizam conteúdo com JavaScript depois que a página é carregada. Extratores de HTML estático, como requests+BS4, veem o esqueleto, não o DOM renderizado.
# Static scraper sees:
# <div id="app"></div>
# Rendered page has:
# <div id="app">
# <h1>Product List</h1>
# <ul>... dynamically loaded items ...</ul>
# </div>Playwright para Python
O Playwright controla programaticamente um navegador real (Chromium, Firefox, WebKit). Ele aguarda a execução do JavaScript antes de extrair o conteúdo.
# pip install playwright
# playwright install
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://example.com")
title = await page.inner_text("h1")
print(title)
await browser.close()
asyncio.run(main())Esperando por elementos
Use page.wait_for_selector() para esperar até que um elemento apareça no DOM antes de extrair dados.
from playwright.async_api import async_playwright
import asyncio
async def scrape():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://spa-example.com")
await page.wait_for_selector(".product-list")
items = await page.query_selector_all(".product-item")
texts = [await i.inner_text() for i in items]Selenium
Selenium é uma biblioteca mais antiga de automação de navegadores. O Playwright é preferível em projetos novos por oferecer melhor suporte assíncrono e mais velocidade.
# pip install selenium
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
driver = webdriver.Chrome()
driver.get("https://example.com")
elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "h1"))
)
print(elem.text)
driver.quit()Modo sem interface gráfica
Execute os navegadores no modo sem interface gráfica (sem janela visível) para a extração de dados no servidor.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True) # no window
page = await browser.new_page()
await page.goto("https://example.com")
html = await page.content()
await browser.close()Interceptando requisições de rede
O Playwright pode interceptar e simular requisições de rede, o que é útil para bloquear anúncios e rastreadores ou capturar diretamente respostas de APIs.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.route("**/*.{png,jpg,css}", lambda route: route.abort())
await page.goto("https://example.com") # loads 3x fasterLimitação de taxa e atrasos
Imite o comportamento humano: adicione atrasos aleatórios entre as requisições e limite a taxa para evitar acionar sistemas antibot.
import time, random
def polite_scrape(urls):
for url in urls:
fetch(url)
time.sleep(random.uniform(1, 3)) # 1-3 s random delayRotação de agentes de usuário
Alterne as sequências de caracteres do agente de usuário para evitar bloqueios baseados no UA padrão do extrator.
import requests, random
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
]
def fetch(url):
return requests.get(url, headers={"User-Agent": random.choice(USER_AGENTS)})Cookies e sessões
Mantenha os cookies da sessão para continuar conectado entre as requisições. Tanto requests Session quanto o Playwright gerenciam cookies automaticamente.
import requests
with requests.Session() as s:
s.post("https://example.com/login", data={"user":"me","pass":"pw"})
# session cookie kept automatically:
dashboard = s.get("https://example.com/dashboard")CAPTCHA e considerações legais
CAPTCHA são medidas antibot. Resolvé-los programaticamente é tecnicamente possível (2captcha, anti-captcha), mas gera preocupações éticas e legais. Sempre consulte o robots.txt e os Termos de Serviço do site antes de fazer extração de dados.
# Before scraping:
# 1. Check robots.txt: https://example.com/robots.txt
# 2. Review the Terms of Service for "scraping" or "automated access" clauses
# 3. Only scrape public data
# 4. Honour Crawl-delay directives
# 5. Cache responses to avoid repeated hitsCapturas de tela e PDF com Playwright
O Playwright pode capturar a tela ou imprimir páginas em PDF — útil para testes visuais e arquivamento.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://example.com")
await page.screenshot(path="page.png", full_page=True)
await page.pdf(path="page.pdf")
await browser.close()Verificação rápida
Por que requests + BeautifulSoup falha em muitos sites modernos?
Revisão
Use Playwright ou Selenium para páginas renderizadas por JavaScript. Execute-os no modo sem interface gráfica em servidores. Adicione atrasos e alterne os agentes de usuário para evitar bloqueios. Intercepte requisições de rede para bloquear rastreadores. Sempre respeite o robots.txt e os Termos de Serviço.
Perguntas Frequentes
A aula “Tratamento de JavaScript e medidas antirraspagem” é grátis?
Sim — o texto completo de “Tratamento de JavaScript e medidas antirraspagem” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Tratamento de JavaScript e medidas antirraspagem”?
Use Playwright/Selenium para conteúdo renderizado por JS e limitação de taxa. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Tratamento de JavaScript e medidas antirraspagem”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Requisições HTTP com requests e httpx
- Análise de HTML com BeautifulSoup
- Criação de um spider com Scrapy
- Tratamento de JavaScript e medidas antirraspagem