Vai al catalogo
PORTALI-BATCH • Setup 24–72h su flusso reale (consigliato)

Relay

Quando non c’è API: automatizziamo login, download/upload e naming. Con retry, tracciamento e report finale.

Richiedi stima Torna al catalogo
CodePulse Execution Environment
SCRIPT ENGINE (PYTHON)
from playwright.sync_api import sync_playwright
import logging
import time

def scrape_legacy_portal(credentials, target_year='2025'):
    with sync_playwright() as p:
        # 1. Avvio Browser invisibile con configurazioni Anti-Fingerprinting
        browser = p.chromium.launch(headless=True, args=['--disable-blink-features=AutomationControlled'])
        page = browser.new_page()
        
        try:
            # 2. Flusso di Login Deterministico
            page.goto("https://legacy-portal.b2b.com/auth")
            page.fill("input[name='username']", credentials['user'])
            page.fill("input[name='password']", credentials['pwd'])
            page.click("button#login-submit")
            
            # Aspetta che l'UI vecchia scompaia (Explicit Wait sulla sessione)
            page.wait_for_selector("div.dashboard-welcome", timeout=15000)
            
            # 3. Navigazione logica e Paginazione (RPA loops)
            page.goto(f"https://legacy-portal.b2b.com/archives/{target_year}")
            download_count = 0
            
            while True:
                # Estrae tutti i pulsanti di download visibili in questa paginata
                rows = page.locator("table#results tbody tr")
                for i in range(rows.count()):
                    # Pattern Intercettazione Download senza interferenze OS
                    with page.expect_download() as download_info:
                        rows.nth(i).locator("button.btn-download").click()
                    download = download_info.value
                    download.save_as(f"./downloads/{target_year}/file_strutturato_{download_count}.pdf")
                    download_count += 1
                
                # Loop paginazione: controlla se esiste la pagina successiva
                next_btn = page.locator("a.next-page")
                if not next_btn.is_visible() or next_btn.is_disabled():
                    break
                next_btn.click()
                time.sleep(1.5) # Ritardo pseudo-umano
                
            return f"Successo: Acquisiti {download_count} files."
            
        except Exception as e:
            logging.error(f"Crash del bot alla riga. Gestione Exception: {str(e)}")
            page.screenshot(path="debug_crash.png")
            return "Errore critico. Salvato lo screenshot del server target."
FLUSSO DATI IN INGRESSO
URL: vecchio-portale-pa.it/login
Account: Admin_Aziendale
Obiettivo: Scaricare tutti e 400 i PDF di 'Bandi Chiusi 2025' navigando le 15 pagine della tabella HTML.
MONITOR ATTIVITÀ
Sistema in standby. In attesa del comando di esecuzione...

Il problema

Operazioni ripetitive su portali: click su click, errori, credenziali, pagine lente e file che “spariscono”.

Cosa fa

  • Automatizza i passaggi ripetitivi (login, filtri, download/upload) con regole chiare.
  • Rinomina e organizza i file in cartelle coerenti (cliente, periodo, commessa).
  • Genera report: cosa è stato scaricato/caricato, errori, retry eseguiti e tempi.

Esecuzione

Prima Attività ripetitive e rischi di saltare un passaggio o caricare il file sbagliato.
Dopo Esecuzione tracciata, output ordinato e report che prova cosa è stato fatto.

IO Schema

Input: Credenziali/istruzioni flusso, Elenco pratiche/file (Excel/CSV)
Output: File organizzati, Report esito, Log

Pacchetti

Starter
€ 149
Automazione base con guida + esempi

  • Automazione base
  • Guida
  • Esempi
Stima rapida
Business
€ 2.190
2–3 portali + retry/queue + report esiti + 30 gg supporto

  • 2–3 portali
  • Retry/queue
  • Report esiti
  • 30 gg supporto
Stima rapida
Su misura
da € 4.500
Portali complessi, MFA, orchestrazione, monitoraggio e SLA

  • Portali complessi
  • MFA
  • Orchestrazione
  • Monitoraggio
  • SLA
Stima rapida
Relay Verifica gratuita
Dati alla mano