如何在xpath中选择具有相同属性的第一个ul及其子元素

时间:2016-08-10 11:38:15

标签: xpath web-scraping

我有一个主页有2个分页部分。我想一次挑选所有页面。我怎么能这样做?

<div class='row row-large s-t-sm'>

   <div class='columns'>
      <div class='pagination-centered'>
         <ul class='pagination'>
            <li><a href='1.php'>1</a></li>
            <li><a href='2.php'>2</a></li>
            <li><a href='3.php'>3</a></li>
         </ul>
      </div>
   </di>

</div>

同样的事情就在页面的底部。当我想在每个href内选择<a>的所有<li>时,它会返回null。

<?php
$sitecontent =  file_get_contents('www.example.com');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($sitecontent);
libxml_use_internal_errors(false);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//(div[@class='row row-large m-t-sm']/div[@class='column']/div/ul[@class='pagination'])[1]/li/a/@href");
foreach ($nodes as $link) {
      $stackHref[]=$link->nodeValue;      
  }
var_dump($stackHref);//returns array with Zero
?>

1 个答案:

答案 0 :(得分:0)

请尝试以下xpath: -

(//ul[@class="pagination"])[1]//@href

在代码中使用xpath以上: -

$nodes = $xpath->query('(//ul[@class="pagination"])[1]//@href');