xPath选择器无法正常工作

时间:2016-09-22 13:15:23

标签: php xpath domxpath

我有一个功能可以在src标记中抓取图片section 属性。但它会从此指定的标记(由src选择)中提供图像class

$doc = new DOMDocument();
@$doc->loadHTMLFile('http://www.akairan.com/health/bimari-behdasht/news201691911413397586.html');

$finder = new DomXPath($doc);
$imgNodes = $finder->query('//article[@class="contentpaneopen_text"]//img/@src');

$images = array();
foreach($imgNodes as $node) {
    echo $node->nodeValue . "<br />";
}

结果是:

http://cdn64.akairan.com/files/images/20160919/20169/2016919114132436510a.jpg
http://cdn2.akairan.com/akairan/telegram.jpg
http://ser8.akairan.com/img/cdn/125/30/icmjthidoctor.ir.jpg
http://ser9.akairan.com/img/cdn/180/80/akairan__aka__m998__027343234141194102a.jpg
http://ser9.akairan.com/img/cdn/180/80/akairan__aka__m998__074496544283135102a.jpg



但它应该只返回第一个链接,而不是其他链接。

1 个答案:

答案 0 :(得分:1)

由于<img>内有多个<article class="contentpaneopen_text">个孩子,因此您获得多个结果是正常的。

您的xpath需要更精确。我们可以看到您要匹配的内容也应该包含父<a>,并且应该具有title属性。

尝试:

//article[@class="contentpaneopen_text"]//a/img[@title!='']/@src