ExemplosExemplo

Exemplo: colete e guarde

Dado coletado só é útil se for guardado. Este script é a cola entre três recursos: chama um scraper publicado, grava as linhas no bucket do projeto com a data de hoje e compara a quantidade de linhas com a que guardou da última vez. Coloque num agendamento diário e você tem um histórico do site.

O que você vai aprender
  • Chamar um scraper e tratar o Nada encontrado
  • Enviar linhas para o S3 e guardar um valor entre execuções

Três chamadas do SDK

scraper.run devolve as linhas da versão publicada. s3.upload recebe texto — aqui o JSON das linhas — e grava na conexão S3 do projeto, devolvendo o caminho. state guarda valores pequenos de uma execução para a outra: este script guarda quantas linhas a última execução viu.

Navegador de ArquivosNavegue e gerencie os arquivos do bucket S3 conectado.
Raiz do bucket/products/Nova pastaEnviar arquivo
Buscar arquivos…Ctrl KTodos os tipos
archive/Tamanho—Modificado—
2026-10-16.jsonTamanho48 KBModificadoHoje 06:00
2026-10-15.jsonTamanho47 KBModificado15 out
2026-10-14.jsonTamanho47 KBModificado14 out
2026-10-13.jsonTamanho45 KBModificado13 out
Cada execução deixa um arquivo com data no bucket, que você navega pela conexão S3.

O código

store_products.py
import json
from datetime import date
from waiso import scraper, s3, state

def main(category: str = "2"):
    res = scraper.run("shop_products", {"category": category}, timeout=300)
    if res.not_found:
        return {"stored": None, "rows": 0, "change": 0}
    obj = s3.upload(json.dumps(res.rows), name=f"{date.today()}.json",
                    folder=f"products/{category}")
    before = state.get(f"count:{category}", 0)
    state.set(f"count:{category}", res.count)
    return {"stored": obj.s3.path, "rows": res.count,
            "change": res.count - before, "doubts": res.doubts}

A organização dos arquivos faz a contabilidade. Cada categoria tem a própria pasta e cada arquivo leva a data no nome; todo envio também ganha um prefixo curto e único, então duas execuções no mesmo dia deixam dois arquivos e nada é sobrescrito. O caminho devolvido é a chave exata, por isso o script o devolve. A chave do estado também leva a categoria, então rodar o script para várias categorias nunca mistura as contagens.

  1. Publique o scraper primeiro: o script sempre roda a versão publicada.
  2. Rode o script duas vezes. Na segunda, change é 0, a menos que o site tenha mudado.

Transforme em rotina

Publique o script e adicione um agendamento diário na aba Gatilhos dele. Repasse as doubts: quando a lista não vem vazia, um alerta ou uma condição num flow pode pedir que uma pessoa olhe antes de confiar nos dados.