ximarx ha scritto:e ne leggo il contenuto utilizzando tecniche di dom traversal (considera la pagina come se fosse un albero... ogni tag è un ramo e tu salti da uno all'altro cercando quello che ti serve) o tramite pattern matching (pensala come la ricerca di porzioni di stringhe simili a quelle che ti servono in tutta la pagina).
case self::TYPE_MOVIES:
$url = sprintf(self::URL_MOVIES_INDEX_AZ, $resourceGroup);
$xpathQuery =
'//div[@id="maincontent"]//p/*/a[1][node()][text()]';
$hasThumbnail = false;
$hasDescription = false;
break;
potresti spiegarmi sempre in modo semplice che significa la stringa in rosso?
Scusa la mia ignoranza spero di non annoiarti con queste domande, per te banali
E' una query XPath (leggi qui per maggiori info:
Registrati o effettua il Login per visualizzare il link!.Nello specifico significa: seleziona tutti i nodi A con indice 1 e che hanno almeno un nodo figlio (cioe il testo), che sono nipoti di un nodo p, che sono figli di un qualsiasi nodo div con id "maincontent".
Lo so, è un po' complicato a dirlo in questo modo, ma in realtà il concetto è molto semplice.
Se pensi ad una pagina html come se fosse un albero di tag, puoi utilizzare la giusta sintassi xpath per selezionarne alcuni in base alla posizione (discendenza) o alle caratteristiche.
Ti faccio questo semplice esempio. Facciamo il caso che la tua pagina html sia:
- Codice: Seleziona tutto
<html>
<body>
<nodo>
<figlionodo class="fafuffa">
<a>Testo</a>
</figlionodo>
</nodo>
</body>
</html>
Facciamo il caso che vuoi selezionare il nodo "a". Per farlo puoi usare una di queste query:
/body/nodo/figlionodo/a -> questa è la piu semplice, semplicemente gli indichi il percorso completo.. come fosse una directory sull'hdd
//a -> selezioni tutti i nodi "a" indipendentemente dalla posizione, in questo caso va bene perche ce ne sta 1 solo... altrimenti te li individuerebbe tutti
//figlionodo[@class="fafuffa"]/a -> seleziona i nodi "a" che sono figli dei nodi "figlionodo" con class = fafuffa.
... Etc etc
PS. notare che nella prima query non ho aggiunto "html", in quanto il root node viene indicato semplicemente con il "/"