用xpath [position()<= 6]选择前6个元素

时间:2019-08-26 01:20:43

标签: php xpath

我正在从网站上抓取一些图像数据。没问题,直到这里。但是我的使用方式无法解决问题。

我的xpath查询就在下面。尝试使用position()选择前6个el。但是它仍然返回所有元素。

  $route = $path->query("//li/img[@class='lazy'][position() <= 6]");
  foreach($route as $val){

      var_dump(trim($val->getAttribute("data-original")));

  }

我不确定我在做什么错吗?除了position()之外,还有其他方法可以选择前6个元素吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要这个。

  $route = $path->query("//li[1]/img[@class='lazy' and position() <= 6]");
  foreach($route as $val){

      var_dump(trim($val->getAttribute("data-original")));

  }

如果您不想指定<li>的索引,则需要使用一个计数器。

 $route = $path->query("//li/img[@class='lazy' and position() <= 6]");
 $ctr = 0;
      foreach($route as $val){
         if ($ctr <= 6){
          var_dump(trim($val->getAttribute("data-original")));
         }
         $ctr = $ctr + 1;
      }