HTML解析带有DomDocument和DOMXPath的URL - 按ID获取元素

时间:2015-05-14 11:10:24

标签: php html xpath domdocument

我已开始开发脚本,因此我可以解析HTML dom元素。

以下是我已经完成的事情:

<?PHP
// to retrieve selected html data, try these DomXPath examples:

$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);

$elements = $xpath->query("*/span[@id='ProductName']");

if (!is_null($elements)) {
  foreach ($elements as $element) {
    echo "<br/>[". $element->nodeName. "]";

    $nodes = $element->childNodes;
    foreach ($nodes as $node) {
      echo $node->nodeValue. "\n";
    }
  }
}
?>

我想要的只是获取HTML元素<span id="ProductName"></span>

中包含的文本

我的脚本问题是我只得到空白屏幕,根本没有结果。

请你帮我理解这件事是如何运作的。

提前致谢!

2 个答案:

答案 0 :(得分:1)

你应该检查你的查询是否产生了任何元素(DOMNodelist)。先检查一下然后得到元素。

$elements = $xpath->query('//span[@id="ProductName"]');
if($elements->length > 0) {
    echo $elements->item(0)->nodeValue;
}

旁注:虽然我在移动设备上无法测试这个但这应该是基本的想法

答案 1 :(得分:0)

这里有例子:

http://php.net/manual/en/class.domxpath.php

你可以这样做:

$val=$xpath[0]->nodeValue;
var_dump($val);