HTML 使用 DOMDocument 和 DOMXPath 解析 URL - 按 ID 获取元素

HTML Parsing URL with DOMDocument and DOMXPath - Get element by ID

我已经开始开发一个脚本,所以我可以解析 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>

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

你能帮我理解这个东西是如何工作的吗?

提前致谢!

这里有例子:

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

你可以做到:

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

A您应该检查您的查询是否产生了任何元素 (DOMNodelist)。先检查再获取元素

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

旁注:我无法在移动设备上进行测试,但这应该是基本思路