2

私にはかなり悩ましい問題があります。cURL と phpQuery の組み合わせを使用して、Web ページからいくつかのコンテンツを取得しています。

私が取得しているページには、投稿の評価を決定する次のコードがあります。

<div class="post">
    <ul id="thumb_ul" class="star-rating" style="width:60px;">
        <li class="current-rating" style="width:0px;"></li>
    </ul>
</div>

私は次のようにphpQueryを使用しています:

$pqD = phpQuery::newDocument($buffer);
foreach(pq('div.post') as $li) {
    $rating = pq($li)->find('ul > li.current-rating')->attr('style');
}

評価は、明らかに、<li>タグまたはstyle属性で定義されます。でアクセスすることを考えましたが、結果としてpq($li)->find('ul > li.current-rating')->attr('style')得られると期待してwidth:0pxいました。評価は次のように定義されます: 0-0、12-1、24-2、...、60-6。

ただし、phpQuery は、空のタグに「関心がある」ようには見えません。ページから取得している他のすべてのものについては、うまく機能します。

何か案は?どうも

4

1 に答える 1

2

アップデート:

完全なテストソース: (コピーしてテスト)

<?php
require_once('phpQuery/phpQuery.php');

$buffer = '
   <div class="post">
    <ul id="thumb_ul" class="star-rating" style="width:60px;">
        <li class="current-rating" style="width:0px;"></li>
         <li class="current-rating" style="width:6px;"></li>
          <li class="current-rating" style="width:8px;"></li>
    </ul>
</div>
';

$doc = phpQuery::newDocument($buffer);
foreach ($doc['.post ul li.current-rating'] as $li) {
  $rating .= pq($li)->attr('style');
    // or $rating[] .=  if you need an array()  
}

echo $rating; //ouput: width:0px;width:6px;width:8px;
?>
于 2010-12-05T10:35:30.253 に答える