我有这两个查询:
1)获取图片的所有网址:
$imgs = $xpath->query('//div[@class="pin"]/div[@class="PinHolder"]/a/img');
2)获取每个图像的Facebook喜欢的人数
foreach($xpath->query('//span[@class="LikesCount"]') as $span) {
$int = (int) $span->nodeValue;
if ($int > 5) {
echo $i++ . "--> " . $int . "<br />";
}
}
我想将它们合并,以获得已被Facebook喜欢的图像超过5次
也就是说,没有被喜欢的图片根本没有LikesCount类。
按照标记示例:
<div class="pin">
[...]
<a href="/pin/56787645270909880/" class="PinImage ImgLink">
<img src="http://media-cache-ec3.pinterest.com/upload/56787645270909880_d7AaHYHA_b.jpg"
alt="Krizia"
data-componenttype="MODAL_PIN"
class="PinImageImg"
style="height: 288px;">
</a>
<p class="stats colorless">
<span class="LikesCount">
22 likes
</span>
<span class="RepinsCount">
6 repins
</span>
</p>
[...]
</div>
答案 0 :(得分:1)
要检索并非所有图像,只检索like-count为5或更多的图像,我会尝试将作业中的XPath表达式更改为$imgs
以读取:
//div[@class="pin"]
[.//span[@class = 'LikesCount']
[substring-before(normalize-space(.),' ') > 5]]
/div[@class="PinHolder"]
/a/img
(我添加了空格以使其更容易理解;如果您的XPath解析器不遵循此问题中的规范,则可能需要消除换行符[有些不这样做]。)
我不清楚为什么cbuckley说这需要XPath 2.0;也许他在这里看到一些微妙的问题,我不知道。