sto "tentando" per raschiare una pagina web che ha le seguenti strutture all'interno della pagina:Come analizzare l'HTML effettivo dalla pagina utilizzando CURL?
<p class="row">
<span>stuff here</span>
<a href="http://www.host.tld/file.html">Descriptive Link Text</a>
<div>Link Description Here</div>
</p>
Sto raschiando il pagina web utilizzando ricciolo:
<?php
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($handle);
curl_close($handle);
?>
Ho fatto qualche ricerca e ha scoperto che non dovrei usare un RegEx per analizzare il codice HTML che viene restituito dal ricciolo e che dovrei usare DOM PHP. Questo è il modo che ho fatto questo:
$newDom = new domDocument;
$newDom->loadHTML($html);
$newDom->preserveWhiteSpace = false;
$sections = $newDom->getElementsByTagName('p');
$nodeNo = $sections->length;
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo $printString . "<br>";
}
Ora non sto fingendo di avere capito bene questo, ma ho il senso, e io capisco sezioni sto volendo. L'unico problema è che quello che ottengo è solo il testo della pagina HTML, come se l'avessi copiato dalla mia finestra del browser. Quello che voglio è il codice HTML vero e proprio perché voglio estrarre i collegamenti e le uso anche, in questo modo:
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}
Come potete vedere, non riesco a ottenere il link perché sto ottenendo soltanto il testo della pagina web e non la fonte , come voglio. So che "curl_exec" sta tirando l'HTML perché ho provato proprio questo, quindi credo che il DOM stia in qualche modo spogliando l'HTML che voglio.
È inoltre possibile scorrere i nodi utilizzando 'foreach' al posto delle anse' for'. Ciò lo renderà più compatto e comprensibile, dal momento che in realtà non sembra (sembra) necessario alcuno degli indici. – janmoesen