Comparação de preços, 3 lojasDesenvolvimento e personalização

Um parser em Python que compara preços dos mesmos produtos em 3 lojas online abertas em uma só tabela

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 compara preços dos mesmos produtos em 3 lojas online abertas em uma só tabela

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 coloca lado a lado os preços dos mesmos produtos em até três lojas online abertas: uma linha por produto, com o preço, o preço antigo, o estoque e o link de cada loja, e a data da verificação. As três lojas vêm no Premium; o Básico e o Padrão leem uma loja, como começo ou teste. Os produtos são cruzados por um código que as lojas mostram, como o código de barras ou o código de peça do fabricante, ou pelos links que você listar para cada produto: só os nomes variam demais para cruzar com segurança. Envie os sites, uma página de produto de cada um salva no seu navegador e a sua lista de produtos. Você recebe o código em Python, um arquivo de configurações e um README e roda no seu computador. Ele lê páginas abertas em um ritmo educado, nunca faz login nem contorna captchas ou proteções, e não lê Amazon nem Google. Você decide se os termos das lojas permitem; uma mudança futura no layout 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.
  • Uma linha por produtoPreço, estoque e link de cada loja lado a lado
  • Cruzado por código ou pelos seus linksCódigo de barras, código de peça do fabricante ou links que você listar
  • Data da verificaçãoEm toda linha, para comparar as execuções
  • Ritmo educadoUma pausa entre as páginas, definida nas configurações
  • Roda no seu computadorWindows, macOS ou Linux, com Python

Como funciona

  1. 1
    LojasVocê passa as lojas, as páginas de produto salvas e a sua lista de produtos
  2. 2
    ParserEscrevemos o código e o guia para rodá-lo
  3. 3
    ExecuçãoVocê roda e confere algumas linhas em cada loja
  4. 4
    AjustesVocê pede ajustes dentro do seu pacote e envia qualquer mensagem de erro

O que precisamos de você

As três lojas (ou uma, no Básico e no Padrão) e uma página de produto de cada, salva no seu navegador (Arquivo > Salvar página como). Sua lista de produtos com o código que as lojas mostram, como o código de barras, ou uma tabela com o link de cada produto em cada loja. Os campos de que você precisa por loja, ex.: preço, preço antigo, em estoque, link. Mais ou menos quantos produtos. CSV, Excel ou JSON.

Vamos perguntar:

  • Quais lojas?
  • Como cruzar os produtos
  • Os campos por loja
  • Mais ou menos quantos produtos?

Compare os pacotes

PacotesBásicoUma loja para começarR$ 117PadrãoUma loja, categoria inteiraR$ 234Premium3 lojas em uma tabelaR$ 423
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

Por que só o Premium compara 3 lojas?

Cada loja tem as próprias páginas, então cada uma precisa de uma parte própria do código. O Básico e o Padrão cobrem uma loja, o que é um bom jeito de testar primeiro.

E se uma loja não mostrar código de barras?

Então nos passe uma tabela com o link de cada produto em cada loja. Nós não cruzamos produtos chutando pelos nomes.

Ele pode incluir Amazon, Google Shopping ou lojas de redes sociais?

Não. Amazon, Google, LinkedIn e redes sociais estão fora: os termos deles proíbem. Para outras lojas, você decide se os termos permitem.

Ele pode comparar o frete também?

Só quando a página do produto mostra o valor para qualquer visitante. Ele nunca coloca itens no carrinho, preenche endereço ou faz login.

Não encontrou a resposta?

Pacotes