Parser de cotações de câmbioDesenvolvimento e personalização

Um parser em Python que salva cotações abertas de moedas e criptomoedas em uma tabela, com a hora de cada leitura

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 salva cotações abertas de moedas e criptomoedas em uma tabela, com a hora de cada leitura

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

Casas de câmbio, lojas que precificam em várias moedas e responsáveis pela contabilidade usam este parser para salvar cotações de páginas abertas em uma tabela: moeda ou criptomoeda, cotação de compra e de venda, cotação oficial, variação do dia quando aparece, a fonte e a hora da leitura. Envie as páginas de onde você tira as cotações, como a tabela pública de câmbio de um banco, e uma ou duas delas salvas no seu navegador. Você recebe o código em Python, um arquivo de configurações e um README e roda no seu computador quando precisar de uma leitura. As cotações são copiadas como a página mostra naquele momento: não é um feed ao vivo e não dá orientação financeira nem previsões. Quando uma fonte tem um feed oficial de dados abertos, avisamos. Ele lê páginas abertas em um ritmo educado e nunca faz login nem contorna captchas ou proteções. Você decide se os termos do site permitem; uma mudança futura de 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.
  • Compra e venda separadasColunas separadas, como números
  • Hora de cada leituraData e hora em cada linha
  • Fonte em uma colunaPara as cotações de páginas diferentes não se misturarem
  • Ritmo educadoNão a cada segundo: uma pausa que você define
  • Roda no seu computadorWindows, macOS ou Linux, com Python

Como funciona

  1. 1
    FontesVocê passa as páginas de cotações e as moedas ou criptomoedas
  2. 2
    ParserEscrevemos o código e o guia para rodá-lo
  3. 3
    ExecuçãoVocê roda e compara a primeira leitura com o site
  4. 4
    AjustesVocê pede ajustes dentro do seu pacote e envia qualquer mensagem de erro

O que precisamos de você

As páginas de onde você tira as cotações, com links, e as moedas ou criptomoedas de que você precisa. Os campos na ordem da sua tabela, ex.: moeda, compra, venda, cotação oficial, variação, fonte, hora. Uma ou duas dessas páginas salvas no seu navegador (Arquivo > Salvar página como) ou capturas de tela. Com que frequência você precisa de uma leitura, o formato dos números (ponto ou vírgula), e CSV ou Excel.

Vamos perguntar:

  • Quais páginas?
  • Moedas ou criptomoedas
  • Os campos de que você precisa
  • Com que frequência você vai rodá-lo?

Compare os pacotes

PacotesBásicoCotações de uma páginaR$ 123PadrãoPáginas de lista e de moedaR$ 240PremiumAté 3 fontesR$ 423
Prazo1 dia2 dias3 dias
Ajustes123
Sites11até 3
Tipos de página12 (lista e página de moeda)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
Hora da leitura em cada linhaSimSimSim
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 pode atualizar as cotações a cada segundo para operar no mercado?

Não. Ele lê as páginas em um ritmo educado quando você o roda, então serve para uma leitura por hora ou por dia, não para operar no mercado. Para preços ao vivo, use a API oficial de uma corretora; as chaves dela nunca vão para o nosso código.

Posso usar essas cotações nos meus preços ou na contabilidade?

Qual fonte conta como oficial para você é decisão sua e do seu contador. O parser copia as cotações como a página mostra; não damos orientação financeira.

Ele consegue ler o meu saldo ou as cotações dentro de uma conta em corretora?

Não. Ele nunca faz login, e senhas, tokens e chaves nunca vão para o código nem para nós.

Quais sites estão fora?

Google, Amazon, LinkedIn e redes sociais, páginas atrás de captcha ou login, e cotações desenhadas como imagens. Para outros sites, você decide se os termos deles permitem. Depois de uma mudança de layout, o parser precisa de uma atualização.

Não encontrou a resposta?

Pacotes