DomDocument / DOMXPath - 如何通过itemprop和img src获取HTML Dom元素

时间:2015-05-14 12:39:32

标签: php dom domdocument domxpath

我正在处理一个从HTML dom元素中获取数据的脚本。

这是我的代码:

<?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>中。我知道如何从具有特定类或id的元素中获取数据。

我不知道如何从图片标记中获取src="http://adres-to-image.com/img.png"(纯示例),或者我如何获取没有id或类但具有itemprop等属性的元素,例如<div itemprop="name"></div>

  1. 如何获取图片src
  2. 如何使用itemprop获取元素?
  3. 提前致谢!

2 个答案:

答案 0 :(得分:2)

对于您的示例:

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

这意味着

选择所有img标签的所有src属性并获取第一个

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

这意味着

使用itemprop attr等于name选择所有div并获取第一个的值。

答案 1 :(得分: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属性相同,查找具有此属性的div:

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

}