0Pricing
Python Academy · Aula

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 faster

Limitaçã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 delay

Rotaçã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 hits

Capturas 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

  1. Requisições HTTP com requests e httpx
  2. Análise de HTML com BeautifulSoup
  3. Criação de um spider com Scrapy
  4. Tratamento de JavaScript e medidas antirraspagem
← Voltar para Python Academy