Loading Light/Dark Toggle
De volta ao blog

Como Construir um Rastreador de Preços de Concorrentes com Playwright

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

10-Nov-2026

TL;DR:

  • Um rastreador de preços da concorrência precisa de uma chave de oferta estável. Faça corresponder o lojista, a variante, o mercado, o vendedor e o tipo de compra antes de comparar preços.
  • O Playwright pode aguardar o preço renderizado. Restrinja o escopo do localizador ao resumo do produto para que o rastreador não leia um preço de recomendação ou de referência.
  • Mantenha o valor e a moeda juntos. Armazene a string exibida e uma representação decimal para que revisores possam auditar o parser.
  • Uma captura com falha deve manter o último bom preço intacto. Envie problemas de acesso, navegação e parsing para o monitoramento da coleta.

Introdução

Uma página de produto pode mostrar um preço promocional, um preço de referência e uma linha de produtos relacionados no mesmo viewport. Se um rastreador ler o primeiro símbolo de moeda, seu alerta pode apontar para uma oferta que o cliente nunca selecionou.

O exemplo de Playwright abaixo lê o preço dentro de um resumo de produto em uma vitrine demo pública. A parte prática vem depois da extração: decidir quando dois preços descrevem a mesma oferta.

Instalar o Playwright

Este exemplo usa o pacote Playwright para Python e uma cópia instalada do Google Chrome. Instale o pacote em um ambiente de projeto e confirme que o Chrome está disponível no worker. Use uma lista explícita de URLs de produtos permitidos para o scheduler e comece com um único worker.

bash Copy
python3 -m pip install playwright

Configure a Oferta que Você Vai Rastrear

Um rastreador deve definir sua chave de comparação antes de visitar uma página. Inclua o lojista, o produto ou variante, o mercado, o vendedor e o tipo de compra. Mantenha a moeda e a base de unidade nas verificações de comparação. O modelo Offer do Schema.org distingue uma oferta do item subjacente e inclui propriedades separadas para preço e moeda.

Se a oferta depender de roteamento por mercado, use o mesmo contexto de rede aprovado para capturas comparáveis. O workflow de infraestrutura de monitoramento de preços cobre as opções de roteamento. Neste demo, o navegador lê uma única exibição no formato do Reino Unido e verifica diretamente o formato em GBP.

Comece a Fazer Scraping com o Scrapeless

Potencialize o seu fluxo de trabalho de web scraping e automação com o Scrapeless!
Inscreva-se hoje e ganhe US$ 5 em crédito gratuito — sem necessidade de cartão de crédito.

Solicite seu crédito gratuito agora no Dashboard do Scrapeless.

Ler Uma Oferta de Uma Página Demo Pública

Uma captura com Playwright pode verificar a navegação, aguardar um localizador de preço exclusivo e emitir uma observação compacta. A referência de localizadores do Playwright explica como os localizadores miram elementos e como operações estritas se comportam quando múltiplos elementos correspondem. O exemplo restringe o escopo tanto do título quanto do preço ao mesmo resumo de produto.

python Copy
import json
import re
from datetime import datetime, timezone
from decimal import Decimal

from playwright.sync_api import sync_playwright

URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"

with sync_playwright() as playwright:
    browser = playwright.chromium.launch(channel="chrome")
    try:
        page = browser.new_page(locale="en-GB")
        response = page.goto(URL, wait_until="domcontentloaded", timeout=20_000)
        if response is None or not response.ok or page.url != URL:
            raise RuntimeError("Expected the demo product page")

        summary = page.locator(".product_main")
        price = summary.locator(".price_color")
        price.wait_for(state="visible", timeout=10_000)
        display_price = price.inner_text().strip()
        match = re.fullmatch(r"£([0-9]+\.[0-9]{2})", display_price)
        if match is None:
            raise ValueError("Unexpected demo price format")

        print(json.dumps({
            "product_key": "books-to-scrape:a-light-in-the-attic",
            "title": summary.get_by_role("heading", level=1).inner_text(),
            "final_url": page.url,
            "offer_type": "listed",
            "price": str(Decimal(match.group(1))),
            "currency": "GBP",
            "display_price": display_price,
            "observed_at": datetime.now(timezone.utc).isoformat(),
        }, ensure_ascii=False))
    finally:
        browser.close()

O script imprime um registro com uma string para o valor decimal, o valor exibido e a hora. O padrão de timestamp da Internet define uma forma de representar o offset de UTC para que observações possam ser alinhadas entre workers.

Comparar Capturas Bem-Sucedidas

Uma alteração de preço deve comparar a observação atual com a observação comparável anterior para a mesma oferta. Preserve ambas antes de enviar um alerta. Se o job encontrar o mesmo valor novamente, deixe o histórico de preços inalterado ou armazene uma confirmação de acordo com suas necessidades de relatório.

Resultado da captura Ação do rastreador
Mesma oferta e preço menor Registrar uma redução de preço e vincular ambas as observações
Mesma oferta e mesmo preço Registrar a saúde da coleta ou uma confirmação
Moeda ou tipo de compra alterados Verificar novamente a chave da oferta antes de comparar
Desafio de acesso, preço ausente ou redirecionamento inesperado Registrar um problema de coleta e manter a última observação válida

Ao passar do demo para um alvo real, use um parser de locale verificado e armazene a base do preço. Uma oferta para membros e uma oferta regular merecem séries separadas. Para páginas que renderizam após a seleção, aguarde juntos o marcador de variante selecionada e a região de preço. Mantenha versões do parser para que um falso alerta após um redesign da página possa ser rastreado.

Quando Migrar o Playwright para um Browser Gerenciado

Comece com um worker local. Migre para um navegador gerenciado para automação web quando a manutenção do worker ou execuções repetidas se tornarem uma limitação prática. A visão geral do navegador descreve sessões em nuvem, e a tabela de preços do Scrapeless ajuda a estimar essa mudança. Mantenha o locator do Playwright e a chave de oferta sob seu controle. O workflow de proxy com Puppeteer cobre a preocupação relacionada ao roteamento.

Conclusão

A demonstração imprime uma oferta de produto. Antes de usar a mesma abordagem em vários varejistas, teste o que acontece quando a região de preço está vazia, a moeda muda ou a página redireciona. Nenhuma dessas observações deve substituir o último preço comparável.


Pronto para construir o seu rastreador de preços de concorrentes?

Junte-se à comunidade no Discord ou no Telegram para conversar com desenvolvedores que estão criando fluxos de trabalho de rastreamento de preços. Crie uma conta no Painel do Scrapeless para começar.


FAQ

P: Com que frequência um rastreador de preços de concorrentes deve ser executado?

Escolha uma cadência que corresponda a como a equipe usa o alerta e ao limite de requisições permitido pelo site. Um relatório de preços e um monitor de promoções sensíveis ao tempo podem usar agendamentos diferentes.

P: Você precisa de um proxy para monitoramento de preços com Playwright?

Uma rota regional permitida pode reproduzir a visualização de uma vitrine local. Uma demonstração de mercado único ou uma fonte local aprovada pode usar sua conexão normal.

P: O que o rastreador deve fazer se um site mostrar um desafio de acesso?

Registre a falha e revise o caminho de acesso com o proprietário do site. Mantenha a oferta bem-sucedida anterior como linha de base de comparação.

P: Isso pode ser executado sem um agente de IA?

Playwright e um agendador podem coletar e comparar observações. Execute com concorrência limitada e valide locators alterados em uma página de produto conhecida.

P: Você pode monitorar qualquer vitrine de concorrente?

Use superfícies aprovadas e revise termos aplicáveis, limites de coleta e direitos de reutilização com assessoria jurídica quando o escopo não estiver claro.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo