xPath 选择器无法正常工作
xPath selector does not work correctly
我有一个功能可以在 section
标签中抓取图像 src
属性 。但它给了我 这个指定部分标签 中的图像 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
但它应该 return 首先 link 而不是其他。
由于<article class="contentpaneopen_text">
里面有多个<img>
children,所以得到多个结果是正常的。
您的 xpath 需要更精确。我们可以看到,你要匹配的那个也应该有一个parent <a>
并且应该有一个title
属性
试试:
//article[@class="contentpaneopen_text"]//a/img[@title!='']/@src
我有一个功能可以在 section
标签中抓取图像 src
属性 。但它给了我 这个指定部分标签 中的图像 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
但它应该 return 首先 link 而不是其他。
由于<article class="contentpaneopen_text">
里面有多个<img>
children,所以得到多个结果是正常的。
您的 xpath 需要更精确。我们可以看到,你要匹配的那个也应该有一个parent <a>
并且应该有一个title
属性
试试:
//article[@class="contentpaneopen_text"]//a/img[@title!='']/@src