我有一个功能可以在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
但它应该只返回第一个链接,而不是其他链接。
答案 0 :(得分:1)
由于<img>
内有多个<article class="contentpaneopen_text">
个孩子,因此您获得多个结果是正常的。
您的xpath需要更精确。我们可以看到您要匹配的内容也应该包含父<a>
,并且应该具有title
属性。
尝试:
//article[@class="contentpaneopen_text"]//a/img[@title!='']/@src