Ricavare tutti gli url delle immagini da una pagina web con PHP

A proposito di web scraping...per un progetto (che a breve sarà online) avevo la necessità di recuperare le immagini presenti in una pagina web.

Dopo aver recuperato l'html il metodo migliore è creare un oggetto DOM e utilizzare XPath per ricavare i tags <img> presenti nella pagina.
Ecco il codice (semplificato e senza troppi controlli) per ricavare un aray di immagini direttamente da un url.

//array con gli url delle immagini trovate
$images_urls = [];

//ricavo l'html della pagina e creo un oggetto DOM
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents('https://www.example.com'));
$xpath = new DOMXPath($doc);

//cerco tutti i tags img
$query = '//img';
$images = $xpath->query($query);
foreach ($images as $image) {
    $images_urls[] = $image->getAttribute('src');
}

//ora in $images_urls abbiamo gli url delle immagini

Attenzione però: gli url ricavati potrebbero non essere validi.
Si potrebbero trovare infatti valori "data:...." o url relativi, che andreanno quindi controllati e corretti di conseguenza se si ha la necessità di scaricare le immagini trovate.

 


Commenti