无法使用xpath(url)访问文本的值

时间:2015-09-08 17:05:59

标签: php xpath meta

我无法获取文字。我需要价格<meta itemprop="price" content="28.99"/>

尝试使用此XPath:

    <?php
header('Content-Type: text/html; charset=utf-8'); 

$urlCT = "https://www.instant-gaming.com/es/834-comprar-key-steam-pro-evolution-soccer-2016/";

$ch = curl_init($urlCT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);

$dom = new DOMDocument();
@$dom->loadHTML($cl);

$xpath = new DOMXpath($dom); 
$xpath->registerXpathNamespace('xhtml' , 'http://www.w3.org/1999/xhtml');
$eltitulo = $xpath->query('//xhtml:meta[@itemprop=\"price\"]/@content'); 
$titulo = $eltitulo->item($x)->nodeValue;
echo $titulo;
?>

我如何获得价格xpath? (28.99€)

谢谢。

1 个答案:

答案 0 :(得分:0)

如果查看页面源代码的顶部,您会看到

<html xmlns="http://www.w3.org/1999/xhtml" ...>

此默认名称空间声明表示此元素的每个后代都没有显式名称空间前缀,将位于http://www.w3.org/1999/xhtml名称空间中。这包括<meta>元素。

因此,您需要为此命名空间声明一个前缀(例如xhtml),并在XPath表达式中使用它:

$xpath->registerXpathNamespace('xhtml' , 'http://www.w3.org/1999/xhtml');
$eltitulo = $xpath->query('//xhtml:meta[@itemprop=\"price\"]/@content'); 

(请注意,属性不受默认命名空间的影响,因此@itemprop例如不在任何命名空间中,并且不需要xhtml前缀。)