0

我有这两个查询:


1)获取图片的所有URL:

$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>
4

1 回答 1

1

要检索并非所有图像,而仅检索点赞数为 5 或更多的图像,我会尝试将作业中的 XPath 表达式更改$imgs为读取:

//div[@class="pin"]
     [.//span[@class = 'LikesCount']
             [substring-before(normalize-space(.),' ') > 5]]
     /div[@class="PinHolder"]
     /a/img

(我添加了空格以使其更容易理解;如果您的 XPath 解析器在这件事上不遵循规范 [有些不遵循],则可能需要消除换行符)。

我不清楚为什么 cbuckley 说这需要 XPath 2.0。也许他在这里看到了一些我没有看到的微妙问题。

于 2012-12-15T20:31:18.603 回答