-1

a.page_arrows の最後の出現を取得するにはどうすればよいですか

    <div class="page-nav">  
    <a class="paginationNumberStyle page_arrows" data-url="/Building-Materials-Concrete-Cement-Masonry/h_d1/N-5yc1vZ25ecodZarlk/h_d2/Navigation?catalogId=10053&amp;Nu=P_PARENT_ID&amp;langId=-1&amp;Nao=384&amp;storeId=10051"> 
    <img alt="" src="/static/images/layout/triangle-green-left.gif"></a>                          
    <span>6</span>
    <a class="paginationNumberStyle" data-url="/Building-Materials-Concrete-Cement-Masonry/h_d1/N-5yc1vZ25ecodZarlk/h_d2/Navigation?catalogId=10053&amp;Nu=P_PARENT_ID&amp;langId=-1&amp;Nao=576&amp;storeId=10051">7</a>
    <a class="paginationNumberStyle" data-url="/Building-Materials-Concrete-Cement-Masonry/h_d1/N-5yc1vZ25ecodZarlk/h_d2/Navigation?catalogId=10053&amp;Nu=P_PARENT_ID&amp;langId=-1&amp;Nao=672&amp;storeId=10051">8</a>
    <a class="paginationNumberStyle page_arrows" data-url="/Building-Materials-Concrete-Cement-Masonry/h_d1/N-5yc1vZ25ecodZarlk/h_d2/Navigation?catalogId=10053&amp;Nu=P_PARENT_ID&amp;langId=-1&amp;Nao=576&amp;storeId=10051"> 
    <img alt="" src="/static/images/layout/triangle-green-right.gif"></a>
</div>  

リンクを収集してから次のページに移動し、ネスト ページがなくなるまで残りのリンクを収集しようとしています。これは私のコードです:

        getLinks('http://www.homedepot.com/Building-Materials-Concrete-Cement-Masonry/h_d1/N-5yc1vZ25ecodZarlk/h_d2/Navigation?catalogId=10053&Nu=P_PARENT_ID&langId=-1&storeId=10051&currentPLP=true&omni=c_Concrete,%20Cement%20&%20Masonry&searchNav=true');

   function getLinks($URL) {


$html = file_get_contents($URL);

$dom = new simple_html_dom();
$dom -> load($html);

    foreach ($dom->find('a[class=item_description]') as $href){
  $url = $href->href;
  echo $url.'<br>';
 }

if ($nextPage = $dom->find("a[class=paginationNumberStyle]" ,0)){ 
    $nextPageURL = 'http://www.homedepot.com'.$nextPage->getAttribute('data-url'); 

    $dom -> clear();
    unset($dom);
    getLinks($nextPageURL);
} else {
    echo "\nEND";
    $dom -> clear();
    unset($dom);
}

}   
4

1 に答える 1

1

同じ問題があり、children メソッドを使用して最初のレベルのアイテムだけを取得しました。

<ul class="my-list">
<li>
    <a href="#">Some Text</a>
    <ul>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
    </ul>
</li>
<li>
    <a href="#">Some Text</a>
    <ul>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
        <li><a href="#">Some Inner Text</a></li>
    </ul>
</li>
</ul>

そして、最初のレベルの li アイテムだけを取得する単純な HTML Dom コードは次のとおりです。

$html = file_get_html( $url );
$first_level_items = $html->find( '.my-list', 0)->children();

foreach ( $first_level_items as $item ) {
... do stuff ...
}
于 2013-03-04T03:18:53.063 に答える