O programa e suas versões
Tudo o que um scraper faz está no programa dele — Python com Playwright, escrito sobre uma pequena biblioteca que guarda as regras para conduzir e ler uma página. Toda mudança, sua ou do assistente, gera uma versão numerada nova; uma versão é o rascunho em que você trabalha, outra é a publicada, e as execuções da publicada nunca mudam até você publicar de novo.
- Ler as partes de um programa gerado
- Mudar o programa à mão ou pelo assistente
- Provar uma versão com Testar e publicar
- Comparar e restaurar versões
Como é o programa
O topo do arquivo guarda as decisões — por onde começar, quais linhas ler e como cada campo é lido. A função main(inputs) percorre os passos, cada um dentro de waiso.step(...) para ganhar a foto e a linha dela na Sessão do programa, e devolve as linhas.
from playwright.sync_api import sync_playwright
import waiso_runtime as waiso # steps, pictures, reading rules
START_URL = "https://shop.example.com/category/{{category}}"
ROW_SELECTOR = "div.product"
FIELDS = {
"name": {"selector": ".name"},
"price": {"selector": ".price", "type": "number"},
"inStock": {"selector": ".available", "read": "attr",
"attr": "data-available", "type": "boolean"},
}
def main(inputs: dict) -> list[dict]:
with sync_playwright() as p:
browser = waiso.launch(p)
page = browser.new_page()
with waiso.step("Open the category", page, mark=None):
waiso.goto(page, START_URL, inputs)
with waiso.step("Read the products", page, mark=ROW_SELECTOR):
rows = waiso.extract(page, ROW_SELECTOR, FIELDS, [])
browser.close()
return rowsA biblioteca por trás
As regras para conduzir e ler uma página ficam na biblioteca waiso_runtime, não em cada arquivo: goto, click e fill conduzem a página, extract lê linhas e campos, each_page segue a paginação e crawl percorre um site inteiro. Isso deixa o programa curto o bastante para ler numa tela só, e uma correção numa regra de leitura chega a todos os scrapers de uma vez. O programa precisa da biblioteca para rodar, então ele roda dentro do Waiso, não sozinho.
Mude
Pelo assistente
Peça no chat — “leia também a avaliação”, “pule itens fora de estoque”. O assistente altera o programa existente, o chat mostra a mudança como um diff, e o resultado é uma versão nova marcada Alterada pelo assistente.
À mão
Edite a aba Código do scraper e clique em Salvar como nova versão. Se o código mudou enquanto isso — o assistente salvou uma versão enquanto você digitava —, o salvamento é recusado: O código mudou enquanto isso (agora v7). Recarregue antes de salvar — sua edição não foi aplicada. Nada é mesclado em silêncio.
Teste e publique
- Defina as entradas
A aba Entradas guarda os valores que o próximo Testar usa.
- Clique em Testar
O rascunho roda como está, sem modelo. Uma versão que rodou sem erro fica marcada como Testada.
- Clique em Publicar
O rascunho vira a versão que todo flow, agendamento e endpoint chama — Publicado — esta versão está no ar.
Versões
| Marca | Significado |
|---|---|
| Rascunho | A versão que você edita e testa. |
| Publicada | A versão que todo chamador roda. |
| Testada / Não testada | Se um Testar já mostrou que ela funciona. |
| Gerada pelo build · Alterada pelo assistente | De onde a versão veio; salvamentos à mão e restaurações também são marcados. |
Comparar com o rascunho mostra qualquer versão contra o rascunho. Restaurar torna uma versão antiga o rascunho como uma versão nova, então o histórico só cresce e nada se perde.