Parser de preços da concorrênciaDesenvolvimento e personalização

Um parser em Python que reúne os preços públicos de um concorrente em uma tabela: preço, preço antigo, estoque e link

Normalmente fica pronto em 15 minutosAjustes incluídosControle de qualidade
Pacotes
Pagamento protegidoDetalhes
  • Os ajustes previstos no pacote são gratuitos.
  • Se você não responder em 3 dias após a entrega, o trabalho é aprovado automaticamente.

O dinheiro fica reservado no pagamento e só é liberado quando você aprova o trabalho.

Um parser em Python que reúne os preços públicos de um concorrente em uma tabela: preço, preço antigo, estoque e link

Exemplo de resultado

Exemplo do pacote Padrão

Parser do catálogo de um fornecedor de ferramentas de jardinagem para o Excel

Como fica o resultado

ArtigoNomePreçoEm estoquePesoFoto
GT-1042Tesoura de poda, 20 mm18,90Sim0,24 kg…/gt-1042.jpg
GT-1187Serrote dobrável, 210 mm24,50Sim0,31 kg…/gt-1187.jpg
GT-2210Tesoura para cerca viva, lâmina ondulada39,00Não1,10 kg…/gt-2210.jpg
GT-3305Pá de jardinagem, inox9,80Sim0,18 kg…/gt-3305.jpg
GT-4120Mangueira de jardim 25 m, 1/2"42,00Sim2,90 kg…/gt-4120.jpg

O arquivo do exemplo tem 1.236 produtos de 52 páginas de lista.

Um trecho do código

def product_links(list_url: str) -> Iterator[str]:
    """Links das páginas de produto de todas as páginas da lista, seguindo o botão 'Próxima'."""
    url: str | None = list_url
    while url:
        page = fetch(url)
        for card in page.select("div.product-card a.title"):
            yield urljoin(url, card["href"])
        next_link = page.select_one("a.pagination-next")
        url = urljoin(url, next_link["href"]) if next_link else None


def fetch(url: str) -> BeautifulSoup:
    """Uma página aberta, em um ritmo educado: uma pausa entre as requisições e algumas tentativas em caso de erro."""
    for attempt in range(3):
        time.sleep(settings.delay_seconds)
        response = session.get(url, timeout=30)
        if response.status_code == 200:
            return BeautifulSoup(response.text, "html.parser")
        log.warning("%s respondeu %s, tentativa %d de 3", url, response.status_code, attempt + 1)
    raise ScraperError(f"{url} não abriu depois de 3 tentativas")

Arquivos: um arquivo ZIP com scraper.py, settings.ini (a página inicial, a pausa entre as requisições, o nome do arquivo), requirements.txt e um README sobre como instalar e rodar. Ele lê só páginas abertas, uma a cada 2 segundos, e confere antes o robots.txt do site. O cliente roda o parser no próprio computador.

Cliente: uma loja online de jardinagem que revende as ferramentas de um fornecedor; o fornecedor tem um catálogo aberto no site, mas nenhum arquivo de tabela de preços. Tarefa: percorrer as páginas de lista do catálogo, abrir cada página de produto e salvar no Excel o código do artigo, o nome, o preço, o estoque, o peso e o link da foto principal, para comparar os preços uma vez por semana.

O cliente e todos os dados são fictícios.

Sobre este serviço

Este parser lê as páginas públicas de produtos de um concorrente e coloca os preços em uma tabela que você pode comparar com os seus: nome do produto, código, preço, preço antigo, desconto, disponibilidade e link, com a data da verificação. Passe o site, links para uma categoria e para uma página de produto, os campos na ordem da sua tabela e uma ou duas dessas páginas salvas no seu navegador. Escrevemos o código em Python pela estrutura real delas, com um arquivo de configurações e um README. Você roda no seu computador sempre que quiser preços atualizados, e a tabela chega direto para você. Ele lê só páginas abertas, em um ritmo educado, e nunca faz login, não contorna captchas nem proteções e não coleta dados pessoais. Você decide se os termos do site permitem, e uma mudança futura no layout dele exige uma atualização.

O que está incluído

  • O que você recebeUm arquivo ZIP com o código em Python, um arquivo de configurações e um README com instruções passo a passo; o código também aparece na página do pedido.
  • Colunas de preçoPreço, preço antigo e desconto como números separados
  • Códigos para cruzarO código ou o código de barras do concorrente, quando a página mostra
  • Data de cada verificaçãoCada linha traz a data em que foi coletada
  • Ritmo educadoUma pausa entre as páginas, que você define
  • Roda no seu computadorWindows, macOS ou Linux; rode de novo para ter preços atualizados

Como funciona

  1. 1
    PáginasVocê passa o site do concorrente, uma categoria e uma página de produto salva
  2. 2
    ParserEscrevemos o código a partir dessas páginas e o guia para rodá-lo
  3. 3
    ExecuçãoVocê roda e compara as primeiras linhas com o site
  4. 4
    AjustesVocê pede ajustes dentro do seu pacote e envia qualquer mensagem de erro

O que precisamos de você

O site do concorrente e as páginas exatas: um link para uma categoria e para uma página de produto, e mais ou menos quantos produtos há. Os campos de que você precisa na ordem da sua tabela, ex.: nome, código, preço, preço antigo, disponibilidade, link. Uma ou duas dessas páginas salvas no seu navegador em HTML (Arquivo > Salvar página como) ou capturas de tela. CSV ou Excel, e onde você vai rodá-lo.

Vamos perguntar:

  • Qual site do concorrente e quais páginas?
  • Os campos de que você precisa
  • Mais ou menos quantos produtos?
  • Com que frequência você vai rodá-lo?

Compare os pacotes

PacotesBásicoPreços das páginas de produtosR$ 117PadrãoUma categoria inteiraR$ 234PremiumAté 3 concorrentesR$ 418
Prazo1 dia2 dias3 dias
Ajustes123
Sites11até 3
Tipos de página12 (categoria e produto)até 3
Camposaté 10até 25até 25 em cada
Percorre as páginas de uma listagemNãoSimSim
Arquivo de resultadosCSVExcel ou CSVExcel, CSV ou JSON
Duplicados removidos, retoma de onde parouNãoNãoSim
Fazer pedido BásicoFazer pedido PadrãoFazer pedido Premium

Pagamento protegido

Você paga ao fazer o pedido, mas o dinheiro só é liberado pelo trabalho aprovado.

  • Preço fixoO preço do pacote não muda depois que você paga.
  • O dinheiro fica reservadoAo pagar, o valor fica apenas reservado. Ele só é repassado quando você aprova o trabalho.
  • Verificado antes da entregaCada resultado passa por um controle de qualidade antes de chegar até você, e você o vê na página do pedido antes de aprovar.
  • Ajustes gratuitosPeça ajustes dentro do seu briefing quantas vezes o pacote permitir.
  • Aprovação após 3 diasSe em 3 dias após a entrega você não aprovar o trabalho nem pedir ajustes, ele é aprovado automaticamente. Se você escrever no chat do pedido após a entrega, o pedido fica em espera; depois que respondermos, podemos reiniciar a contagem de 3 dias e avisaremos no chat.
  • Refazer ou reembolso totalSe o resultado não corresponder ao seu briefing e os ajustes não resolverem, ou se o trabalho levar mais que o dobro do prazo, escreva no chat do pedido: refazemos o trabalho ou reembolsamos o pagamento integralmente.
Como funciona →

Perguntas e respostas

Ele vai cruzar os produtos do concorrente com os meus?

Ele salva o código, o código de barras e o nome do concorrente como a página mostra, para você cruzar com a sua lista no Excel. Se os códigos forem diferentes dos seus, o cruzamento fica por sua conta: não adivinhamos quais produtos são iguais.

Ele vê preços para clientes logados ou atacadistas?

Não. Ele lê os preços que uma página aberta mostra a qualquer visitante. Preços atrás de uma conta, de um login de atacado ou de um captcha ficam fora de alcance.

É permitido coletar os preços de um concorrente?

Coletar preços públicos é permitido em muitos casos, mas os termos dos sites e as leis de dados variam de país para país, então você decide se pode coletá-los e usá-los. O parser nunca faz login, não contorna proteções e não coleta dados pessoais.

Ele pode coletar preços da Amazon, do Google ou de lojas dentro de redes sociais?

Não. Os termos deles proíbem, e o mesmo vale para o LinkedIn e outras redes sociais. Para esses dados, use a exportação oficial ou a API do serviço.

E se o concorrente mudar o site?

O parser segue as páginas como elas são hoje. Depois de uma mudança de layout, ele precisa de uma atualização, que é um novo pedido. Se o site limitar as visitas, o parser não contorna isso.

Não encontrou a resposta?

Pacotes