документ, как получить информацию и imgs - PullRequest
0 голосов
/ 24 мая 2011
<?php 
$htmlget = new DOMDocument();

@$htmlget->loadHtmlFile(http://www.amazon.com);

$xpath = new DOMXPath( $htmlget);
$nodelist = $xpath->query( "//img/@src" );

foreach ($nodelist as $images){
    $value = $images->nodeValue;
}
?>

Я получил все изображения, но как мне получить информацию о том же элементе, в котором находится изображение? например, на amazon.com есть the kindle. У меня есть картина сейчас, но мне нужна информация, такая как описание цены ... спасибо

1 Ответ

1 голос
/ 24 мая 2011

Зависит от разметки запрашиваемой страницы, вот пример получения цены на amazon:

<?php
       $htmlget = new DOMDocument();

       @$htmlget->loadHtmlFile('http://www.amazon.com');

       $xpath = new DOMXPath( $htmlget);
       $nodelist = $xpath->query( "//img/@src" );

        foreach ($nodelist as $imageSrc){

      //fetch images with a parent node that has class "imagecontainer"
      if($imageSrc->parentNode->parentNode->getAttribute('class')=='imageContainer')
      {
        //skip dummy-images
        if(strstr($imageSrc->nodeValue,'transparent-pixel'))continue;

        //point to the common anchestor of image and product-details
        $wrapper=$imageSrc->parentNode->parentNode->parentNode->parentNode->parentNode;

        //fetch the price
        $price=$xpath->query( 'span[@class="red t14"]',$wrapper );
        if($price->length )
        {
           echo '<br/><img src="'.$imageSrc->nodeValue.'">'.$price->item(0)->nodeValue.'<br/>';
        };
      }
}
?>

Но, однако, вам не следует разбирать страницы таким образом. Если они хотят предоставить вам некоторую информацию, у нас обычно есть API. Если нет, они не хотят, чтобы вы что-то захватывали. Такой анализ не является надежным, разметка запрашиваемой страницы может меняться каждую секунду (вы можете открыть дверь для эксплойтов). Это также не может быть законным.

...