Italian [RISOLTO] Estrapolare dati da HTML

MAX_SV

Active Member
Licensed User
Longtime User
Avrei la necessità di estrapolare dei dati all'interno di una pagina web anche scaricandola in locale

Il codice HTML è il seguente

..
..
..
</tr>
<tr class="logriga2">
<td align="center" class="log">281005</td>
<td align="center" class="log">2014</td>
<td align="center" class="log">66</td>
<td align="center" class="log">5</td>
<td align="center" class="log">1</td>
<td align="center" class="log">103</td>

<td align="center" class="log">Tempo Netto</td>
<td align="center" class="log">4'55.500</td>
<td align="center" class="log">28/09/2014 11.09.23</td>
<td align="center" class="log">Vero</td>

</tr>
<tr class="logriga1">
<td align="center" class="log">281003</td>
<td align="center" class="log">2014</td>
<td align="center" class="log">66</td>
<td align="center" class="log">5</td>
<td align="center" class="log">1</td>
<td align="center" class="log">102</td>

<td align="center" class="log">Tempo Netto</td>
<td align="center" class="log">4'36.100</td>
<td align="center" class="log">28/09/2014 11.06.54</td>
<td align="center" class="log">Vero</td>

</tr>
..
..
e via discorrendo

spero in Voi
 

udg

Expert
Licensed User
Longtime User
Lo strumento che ti serve è RegEx.
Non ho con me il PC di sviluppo e non riesco a proporti del codice di esempio, ma dai un'occhiata a quanto detto e vedrai che ti semplifichi la vita.

Questo thread potrebbe essere un punto di partenza.

Come detto non sono in grado di testare il suggerimento, ma prova come espressione matcher:
B4X:
(>.+<\/td>|\/n)+?

Il risultato dovrebbe essere:
>281005</td>
>2014</td>
etc...
sul quale utilizzare la funzione di Replace per eliminare le parti che non ti interessano.

Umberto
 
Last edited:

MAX_SV

Active Member
Licensed User
Longtime User
Lo strumento che ti serve è RegEx.
Non ho con me il PC di sviluppo e non riesco a proporti del codice di esempio, ma dai un'occhiata a quanto detto e vedrai che ti semplifichi la vita.

Questo thread potrebbe essere un punto di partenza.

Come detto non sono in grado di testare il suggerimento, ma prova come espressione matcher:
B4X:
(>.+<\/td>|\/n)+?

Il risultato dovrebbe essere:
>281005</td>
>2014</td>
etc...
sul quale utilizzare la funzione di Replace per eliminare le parti che non ti interessano.

Umberto

Scusa ma sono un po' :confused: mi puoi scrivere due righe di codice ... non riesco a uscirne.
 

udg

Expert
Licensed User
Longtime User
Ci provo (al buio)..
B4X:
'html è la pagina del sito
dim pattern as string
pattern = "(>.+<\/td>|\/n)+?"
Dim m AsMatcher
 m = Regex.Matcher(pattern, html)
 If m.Find Then m.match.replace(">","").Replace("</td>","")
 log(m.match)

Nel pattern ho considerato anche il carattere di newline (/n) quindi dovresti aver il parsing in blocco di tutta la pagina.
In alternativa, basta un loop per valutare riga per riga.

Vedi un po' come va... Sulle prime regex è ostico, ma poi riesce a risolvere in modo elegante tante situazioni.

Umberto
 

MAX_SV

Active Member
Licensed User
Longtime User
Ti ringrazio per il tempo che mi hai dedicato, ma ho risolto in modo diverso:
Con una serie di replace tolgo tutto quello che non mi serve trasformato la pagina in una serie di stringhe che poi gestisco con degli split ... forse non sarà una bellezza ma la gestione dei dati me la gestisco in 4 righe :)

Grazie ancora per le dritte
 

udg

Expert
Licensed User
Longtime User
Beh, l'importante è aver risolto :)
Quando avrai un'oretta extra, prova a cercare un breve tutorial su regex, giusto per apprezzarne le potenzialità anche nelle forme più semplici. Io non ne sono affatto un esperto, ma le poche volte che l'ho utilizzato mi ha colpito l'eleganza della soluzione (ed in genere l'efficienza del codice).

ps: se durante un viaggio Zurigo-Savona ti dovesse capitare di fermarti a Lugano, fatti vivo!
pps: l'invito è valido per tutti i frequentatori del "nostro" forum ;)

Umberto
 

MAX_SV

Active Member
Licensed User
Longtime User
Beh, l'importante è aver risolto :)
Quando avrai un'oretta extra, prova a cercare un breve tutorial su regex, giusto per apprezzarne le potenzialità anche nelle forme più semplici. Io non ne sono affatto un esperto, ma le poche volte che l'ho utilizzato mi ha colpito l'eleganza della soluzione (ed in genere l'efficienza del codice).

ps: se durante un viaggio Zurigo-Savona ti dovesse capitare di fermarti a Lugano, fatti vivo!
pps: l'invito è valido per tutti i frequentatori del "nostro" forum ;)

Umberto

Con le regular expression ho sempre avuto un pessimo rapporto anche in .net
La prossima volta che scendo senza avere il diavolo in coda ti faccio sapere ... un caffè anche se a 3 fr si prende sempre volentieri :)
 
Top