2015-05-14 1 views
2

Я работаю над скриптом, который получает данные из элементов HTML dom.DomDocument/DOMXPath - Как получить элемент HTML Dom по itemprop и img src

Вот мой код:

<?PHP 
$url = 'http://www.sportsdirect.com/nike-satire-mens-skate-shoes-242188?colcode=24218822'; 
libxml_use_internal_errors(true); 
$doc = new DOMDocument(); 
$doc->loadHTMLFile($url); 

$xpath = new DOMXpath($doc); 

$Name = $xpath->query('//span[@id="ProductName"]')->item(0)->nodeValue; 

echo $Name; 
?> 

Этот код просто принимает текст внутри <span id="ProductName"></span>. Я знаю, как получить данные из элементов с определенным классом или идентификатором.

Я не знаю, как я могу получить src="http://adres-to-image.com/img.png" (чистый пример) из тега изображения или как я могу получить элементы, которые не имеют идентификатор или класс, но имеют атрибут как itemprop, например <div itemprop="name"></div>

  1. Как я могу получить изображение src?
  2. Как я могу получить элементы с itemprop?

Заранее благодарен!

ответ

1

Для ваших примеров:

$xpath->query('//img/@src)->item(0)->nodeValue 

Это означает, что

Выберите все в исходные тексты атрибутов всех Img тегов и получить значение первого

$xpath->query('//div/[@itemprop="name"])->item(0)->nodeValue 

Это означает

Выделите все divs с именем itemprop attr равным и получите значение первого.

2

Вы просто посмотрите на атрибуты:

$url = 'http://www.sportsdirect.com/nike-satire-mens-skate-shoes-242188?colcode=24218822'; 
libxml_use_internal_errors(true); 
$doc = new DOMDocument(); 
$doc->loadHTMLFile($url); 

$xpath = new DOMXpath($doc); 

$Name = $xpath->query('//div[@class="productImageSash"]'); 
foreach($Name as $element){ 
    $imgs = $element->getElementsByTagName('img'); 
    foreach($imgs as $img){ 
     $src = $img->getAttribute('src'); 
     echo $src; 
    } 

} 

Выход:

/images/sash/productsash_mustgo.png 

То же самое с itemprop атрибута, обратите внимание на дивы, которые имеют этот атрибут:

$Name = $xpath->query('//div'); 
foreach($Name as $element){ 
    $itemprop = $element->getAttribute('itemprop'); 
    if($itemprop){ 
     echo "found"; 
    } 

}