HTML Select (CSS)

action_html_select · action · Utility · Available · v1.0.0

Description

Parser dichiarativo enterprise di HTML usando selettori CSS standard — l'estrattore "scraper-friendly" che permette al business user di definire una mapping semplice "fieldName → CSS selector" e ottenere in output un object JavaScript strutturato con tutti i campi richiesti, evitando il dover scrivere codice JavaScript imperative con querySelector chain + manual error handling. Il pattern è analogo a quello di Jsoup (Java), Cheerio (Node.js), Beautiful Soup (Python con CSS support) — tutti utilizzati in produzione da progetti enterprise di scraping responsabile per parsing di HTML payload già scaricato da fetch upstream o action_web_fetch_advanced. Coverage piena dei selettori CSS3 specification: tag selector (h1, p, article), id selector (#main-content, #checkout-form), class selector (.product-card, .price-tag), attribute selector ([data-sku], [href*="amazon"], [type="email"]), pseudo-class selector (:nth-child(2n), :first-child, :last-child, :not(.disabled), :has(.discount)), combinator complessi (descendant " ", child >, adjacent sibling +, general sibling ~) — l'utente può copy-paste qualsiasi selettore dal DevTools del browser e funziona. Per ogni campo configurabile la strategia di extraction del valore: (1) "text" default — extract solo il textContent visibile (HTML stripped, gli spazi normalizzati), pattern per estrarre testo human-readable; (2) "html" — extract il innerHTML del element matchato (preserva il markup interno per cases come "description con tag <strong> da preservare"); (3) "attr" con parametro attrName — extract il valore di uno specifico attribute HTML (es. attr=href per link URL, attr=src per immagini, attr=data-sku per identifier nascosti in data-attribute, attr=value per form input default value); (4) "list" — extract un array con il valore (testo o attr) di TUTTI i match del selector invece di solo il primo, pattern per liste enumerabili tipo tutti i titoli di un'archivio blog o tutti i prezzi in una pagina di confronto product. Sicurezza enterprise: NO JavaScript execution sul HTML (il parser è pure HTML — no DOM-level events, no fetch, no XHR), completely safe per processing di HTML untrusted da source web arbitrari senza rischio di XSS o code injection. Output strutturato: { extracted: { fieldName1: "value", fieldName2: ["arr", "of", "values"], ... }, totalFieldsExtracted, totalFieldsMissing, performance: { selectorsMatched, processingTime } }. Use case: parse listing prodotti proprio e-commerce per export Excel quotidiano (cron daily + fetch del catalog page + html_select per scraping di SKU+name+price+stock+image_url → xlsx_build → send_email al merchandising team); estrazione di titolo/prezzo/disponibilità da pagine prodotto competitor monitorate per pricing intelligence; raccolta sistematica di righe da tabella HTML di report istituzionale (es. ISTAT, AGENAS, Banca d'Italia che pubblicano stats in tabelle senza open data CSV equivalent); ingest content blog per RAG/embedding pipeline partendo dalla homepage del blog (extract title+author+date+content_html di ogni post per indicizzazione knowledge base AI); parsing di SERP page (Google/Bing search result) per analisi SEO competitive intelligence.

⚙️ Configuration parameters

Fields shown in the editor when configuring the node. Generated directly from the NodeDefconfigFields.

FieldTypeRequiredDefaultDescription
htmlSource
Sorgente HTML
enum
inputexplicit
noinputinput = HTML dal nodo precedente (estrae da string, .body o .html). explicit = HTML scritto a mano nel campo sotto.
htmlExplicit
HTML (esplicito)
codeno
<html><body><h1>Titolo</h1></body></html>
HTML statico per testing. In produzione usa input dal web_fetch_advanced precedente.
selectorsJson
Selettori CSS (map)
codeyes
{ "title": "h1", "price": { "selector": ".price", "extract": "text" }, "imageUrl": { "selector": "img.hero", "extract": "attr", "attr": "src" }, "tags": { "selector": ".tag", "extract": "list", "limit": 10 } }
Map fieldName → selector. Forma scorciatoia: "title": "h1" equivale a {selector:"h1", extract:"text"}. Forma estesa: {selector, attr, extract, limit}. extract: text (default) | html | attr (richiede attr) | list (array).

⬆️ Node output

Fields available to downstream nodes via $node.<alias>.json.<field>:

  • matched
  • matchedCount
  • totalFields
  • fields

💡 Configuration example

JSON snippet of the node as it appears in the workflow. Values are derived fromdefaultValue and from required parameters.

{
  "id": "node-action_html_select-1",
  "defId": "action_html_select",
  "label": "HTML Select (CSS)",
  "config": {
    "htmlSource": "input",
    "selectorsJson": "{\n  \"title\": \"h1\",\n  \"price\": { \"selector\": \".price\", \"extract\": \"text\" },\n  \"imageUrl\": { \"selector\": \"img.hero\", \"extract\": \"attr\", \"attr\": \"src\" },\n  \"tags\": { \"selector\": \".tag\", \"extract\": \"list\", \"limit\": 10 }\n}"
  }
}

🔗 Related nodes in the same category

Ready to use HTML Select (CSS)?

Available now on all FlowForge plans. Try it free without a credit card.

Start freeBrowse all nodes