Batch Data Collector – Free Data Collector

08. Selettori avanzati

  1. Knowledge Base
  2. Versione ita
  3. 08. Selettori avanzati

Continuiamo a scoprire la potenza dei selettori CSS partendo da una porzione di HTML dell’unità precedente:

<html>
<header>
<title>Yearly budget and expenses</title>
</header>
<body>

<div id="firstBlock">
Questa pagina contiene i conteggi aggiornati al <strong>25 settembre 2019</strong> relativi a budget e spese.
<span>Budget totale delle iniziative: <i>12.000.000 Euro</i></span><br/>
<span>Spese totali delle iniziative: <i>6.000.000 Euro</i></span>
</div>

<table id="year2017">
<tr><td>Month</td><td>Relative (Euro)</td><td>Absolute (Euro)</td></tr>
<tr><td>Jan-Feb</td><td>1.000.000</td><td>1.000.000</td></tr>
<tr><td>Mar-Apr</td><td>1.000.000</td><td>2.000.000</td></tr>
<tr><td>May-Jun</td><td>1.000.000</td><td>3.000.000</td></tr>
<tr><td>Jul-Aug</td><td>1.000.000</td><td>4.000.000</td></tr>
<tr><td>Sep-Oct</td><td>1.000.000</td><td>5.000.000</td></tr>
<tr><td>Nov-Dic</td><td>1.000.000</td><td>6.000.000</td></tr>
</table>

<div class="finalcredit">Credito finale: 6.000.000 Euro</div>
<div class="finalcredit">Credito finale: 1.500.000 Euro</div>

</body>

Ed ecco una lista dei selettori più comuni. Gli esempi riferiti al codice sopra saranno identificati in grassetto.

SelettoreEsempioDescrizione
.class.finalcreditSeleziona tutti gli elementi con class=”finalcredit”.
Nell’esempio due div.
.class1.class2<div class=”style1 style2″>Seleziona gli elementi per i quali siano specificate entrambe le classi style1 e style2.
#id#year2017Seleziona gli elementi con id=”year2017″.
Nell’esempio si tratta di una table.
elementspanSeleziona tutti gli i tag span della pagina. Nell’esempio sono due e quindi span potrebbe essere un elemento ripetitivo.
element#iddiv#firstBlockSeleziona il tag div con id=”firstBlock”.
element.classdiv.finalcreditSeleziona i tag div con class=”finalcredit”.
element elementdiv spanSeleziona i tag span contenuti dentro un tag div. Gli span potrebbero essere contenuti a loro volta dentro altri ulteriori elementi e verrebbero comunque selezionati.
Dall’esempio cattureremmo i due span dentro div#firstBlock.
element>elementdiv > spanSeleziona i tag span direttamente contenuti dentro un tag div. In questo modo si specifica che i tag span devono essere figli di primo grado del tag div.
element + elementspan+spanSeleziona gli elementi span posti immediatamente dopo un altro span. Attenzione, dopo ma non dentro!
Pertanto “body table+table+table ” seleziona la terza tabella figlia del tag body.
element1 ~ element2i ~ spanSeleziona gli elementi i preceduti da un tag span.
[attribute=value ][height=500]Seleziona tutti gli elementi che specificano un attributo height con valore pari a 500.
[attribute~=value][alt~=group]Seleziona tutti gli elementi che specificano un attributo alt con valore contenente la parola group.
[attribute|=value][alt|=group]Seleziona tutti gli elementi che specificano un attributo alt con valore che inizi con la parola group.
element[attribute=value]a[title=Gallery]Seleziona tutti gli elementi a che specificano un attributo title con valore pari alla parola Gallery.
[attribute^=value]a[href^=”https”]Seleziona tutti gli elementi a che specificano un attributo href (che in pratica è l’indirizzo a cui punta il link stesso) con valore che inizi con la sequenza https.
[attribute$=value]a[href$=”.jpg”]Seleziona tutti gli elementi a che specificano un attributo href con valore che finisca con la sequenza .jpg.
[attribute*=value]a[href*=”.google”]Seleziona tutti gli elementi a che specificano un attributo href con valore che contenga la sequenza .google.
:first-childdiv#firstBlock span:first-childSeleziona l’elemento span primo figlio di div#firstBlock.
::first-letterdiv#firstBlock span::first-letterSeleziona la prima lettera del testo contenuto in ogni span figlio di div#firstBlock.
::first-linediv#firstBlock span::first-lineSeleziona la prima riga del testo contenuto in ogni span figlio di div#firstBlock.
:last-childdiv#firstBlock span:last-childSeleziona l’elemento span ultimo figlio di div#firstBlock.
:not(selector)div#firstBlock:not(p)Seleziona tutti gli elementi contenuti in div#firstBlock, purché essi non siano tag p.
:nth-child(n)div#firstBlock span:nth-child(2)Seleziona il secondo tag span figlio di div#firstBlock.
:nth-last-child(n)div#firstBlock span:last-child(2)Seleziona il tag span secondo dal basso, purché figlio di div#firstBlock. In questo caso il penultimo, che è anche il primo nel nostro esempio.


I selettori elencati permetteranno di interpretare anche sezioni di codice molto complesse. E’ possibile provare con mano l’efficacia dei selettori utilizzando il test interattivo disponibile a questa pagina: https://www.w3schools.com/cssref/trysel.asp.

Infine una breve anticipazione: Free/Batch Data Collector implementano alcuni ulteriori selettori nativi che saranno introdotti a partire dalle prossime unità e che permettono di identificare numeri di telefono, lingua della pagina, indirizzo della pagina, titolo e altro ancora.