+ Rispondi alla Discussione
Risultati da 1 a 2 di 2

Estrazione (Parsing) dati da sorgente html

Ultimo Messaggio di giangel84 il:
  1. #1
    User L'avatar di giangel84
    Data Registrazione
    Nov 2005
    Località
    Camposampiero - Padova
    Messaggi
    46
    Segui giangel84 su Twitter Aggiungi giangel84 su Google+ Aggiungi giangel84 su Facebook Aggiungi giangel84 su Linkedin

    Estrazione (Parsing) dati da sorgente html

    Salve a tutti, mi sto cimentando - come da titolo - nell'estrazione di alcuni dati da una struttura nidificata di elementi HTML.

    Questa è la struttura ricorrente
    Codice:
    <div class="nomeclasse">
    <a href="link_immagine_da_estrarre"><img src="url_immagine_da_estrarre/immagine.jpg" border=1 width=200 class="frame"></a><br>
    <h2>
    <a href="link">
    TERZO VALORE DA ESTRARRE<br />
    <b>QUARTO VALORE DA ESTRARRE</b>
    </a>
    </h2>
    </div>
    Ho già fatto qualcosa di simile per una struttura più semplice, senza gli "a capo", usando la funzione preg_match_all, sfruttando le regular expression.
    Non riesco però a creare il pattern della regular expression per il codice qui sopra.
    Non so se procedere con questo metodo o se passare alla funzione DOMdocument di PHP.

    Qualcuno mi saprebbe dare un consiglio o un input che possa aiutarmi poi a proseguire?
    Volendo sfruttare una semplice preg_match_all, quale sarebbe la regular expression corretta?

    Grazie mille.

  2. #2
    User L'avatar di giangel84
    Data Registrazione
    Nov 2005
    Località
    Camposampiero - Padova
    Messaggi
    46
    Segui giangel84 su Twitter Aggiungi giangel84 su Google+ Aggiungi giangel84 su Facebook Aggiungi giangel84 su Linkedin
    Alla fine ho risolto il problema e vi posto la soluzione.

    Ho utilizzato la classe di funzioni simplehtmldom 1.5 ed eseguito il parsing ciclico sfruttando le capacità del DOM in questo modo:

    Codice:
    $items = $html->find('div[class=nomeclasse]');  
    foreach($items as $post) {  
        # remember comments count as nodes  
        $articles[] = array($post->children(0)->href, $post->children(0)->first_child()->src,  $post->children(2)->children(0)->innertext);  
    }
    In questo modo ho estratto il terzo ed il quarto valore in un unica stringa, poi ho separato i valori tenendo solo quello che mi serviva (il quarto, che si trovava tra i tag <b></b>) con una preg_match.

    Codice:
    $regex_pattern = '/<b>(.*)<\/b>/';
    preg_match_all($regex_pattern, $articles[$i][2], $matches);
    $quarto_valore = $matches[1][0];
    Per verificare nel codice quali siano effettivamente i nodi, quindi i child, ho utilizzato il DOM inspector nativo di Chrome che mi ha alleggerito la lettura del sorgente.

    A buon rendere.
    Buone vacanze a tutti.

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.