2010-11-27 81 views
2

我有一個讓我非常惱火的問題。我使用cURL和phpQuery的組合從網頁抓取一些內容。phpQuery從空標記中獲取屬性

在我抓取的網頁,有以下確定崗位等級代碼:

<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在空標記中似乎沒有多少'感興趣'。對於我從頁面抓取的其他東西,它運行良好。

任何想法? THX

+0

您可能需要更新您的phpQuery到最新版本? – 2010-12-07 12:33:35

回答

2

UPDATE:

FULL測試源:(複製和測試)

<?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; 
?> 
+0

謝謝你的迴應,但是這給我留下了相同的結果 - 無:) – hummingBird 2010-12-05 17:35:36