Alla fine ho "quasi" risolto così, prendendo in considerazione entrambi i consigli
, riesco a generare un arrai secondo quello schema @grazie Alhazred, ciclando un div che contiene il prodotto @grazie k.b
Ma mi da un errore quando faccio l'ultimo foreach per visualizzare i contenuti..
Ecco il nuovo codice..
Codice PHP:
<?PHP$html = file_get_contents('http://www.amazon.it/s/ref=sr_il_to_luggage?rh=n%3A2454148031%2Cp_8%3A45-100&sort=relevancerank&ie=UTF8&qid=1430756991&lo=none');$dom = new DOMDocument();@$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$divs = $xpath->query('//div[@class="s-item-container"]');
$dati_prodotto = array();
foreach($divs as $div) {
$links = $xpath->query('.//a[@class="a-link-normal a-text-normal"]', $div); foreach ($links as $link) { $linkprod = $link->getAttribute('href'); }
$images = $xpath->query('.//img[@alt="Dettagli prodotto"]', $div); foreach ($images as $image) { $linkimm = $image->getAttribute('src'); }
$titles = $xpath->query('.//h2[@class="a-size-base a-color-null s-inline s-access-title a-text-normal"]', $div); foreach ($titles as $title) { $titleprod = $title->nodeValue; }
$prezzops = $xpath->query('.//span[@class="a-size-small a-color-secondary a-text-strike"]', $div); foreach ($prezzops as $prezzop) { preg_match_all('/((\d{1,5}),(\d{2}))/', $prezzop->nodeValue , $res ); $prezzoprima = $res[1][0]; }
$prezzods = $xpath->query('.//span[@class="a-size-base a-color-price s-price a-text-bold"]', $div); foreach ($prezzods as $prezzod) { preg_match_all('/((\d{1,5}),(\d{2}))/', $prezzod->nodeValue , $res1 ); $prezzodopo = $res1[1][0]; } $dati_prodotto[] = array('linkprod' => $linkprod, 'imm' => $linkimm, 'titolo' => $titles, 'prezzop' => $prezzoprima, 'prezzodopo' => $prezzodopo );
} print_r($dati_prodotto);
foreach ($dati_prodotto as $singolo_prodotto) : echo '<a href="'.$singolo_prodotto["linkprod"].'">'.$singolo_prodotto["titolo"].'</a><br> <img src="'.$singolo_prodotto["imm"].'" alt="test" height="150" width="150"><br> Prima costava: '.$singolo_prodotto["prezzop"].' , ora viene: '.$singolo_prodotto["prezzodopo"].'<br /><br />'; endforeach;?>
Come potete notare, in fondo alla pagina dei risultati che mostrano il contenuto del print_r, dovrebbe esserci il foreach che mi da questo errore:
codice HTML:
Catchable fatal error: Object of class DOMNodeList could not be converted to string in /web/htdocs/www.miosito.it/home/parsing.php on line 66
P.S. Perchè quando posto codice alcune volte si vede così una porcheria?