2011-10-25 12 views
2

誰かが、2番目のif文がsoldby名を引き出すのがなぜ正しく動作しないのかを知ることができますか?単純なDOMパーサーが動作しない場合

私がしたいことは、売り手のためのイメージがあれば、画像からalt属性を引き出すことです。これは動作します。しかし、画像ロゴがない場合は、altタグの配列内の同じ場所に挿入したい売り手名の太字のタグがあります。

私が働いているHTMLは次のとおりです。http:// amazon.com/gp/offer-listing/B002UYSHMM

誰が助けることはできますか?

ありがとうございました!ここで

$item = array(); 

foreach ($html->find('div.resultsset table tbody.result tr') as $article) { 
    if ($article->find('span.price', 0)) { 
    // get retail 
    $item[$retail.$i++] = $article->find('span.price', 0)->plaintext; 
    // get soldby 
    if ($article->find('ul.sellerInformation img', 0)) { 
     $item[$soldby.$j++] = $article->find('ul.sellerInformation img', 0)->getAttribute('alt'); 
    } else { 
     $item[$soldby.$j++] = $article->find('ul.sellerInformation li a b', 0)->plaintext; 
    } 
    $ret['SellerInfo'] = $item; 
    } 
} 

私は上記の私のコードから抜け出す配列です:あなたはそれがためにSoldByが欠落していることがわかります

Array ([0] => Array ([Retail] => $219.88 [SoldBy] => J&R Music and Computer World) [1] => Array ([Retail] => $234.21 [SoldBy] => PORTABLE GUY) [2] => Array ([Retail] => $235.73 [SoldBy] => The Price Pros) [3] => Array ([Retail] => $234.74 [SoldBy] => GizmosForLife) [4] => Array ([Retail] => $230.00 [SoldBy] =>) [5] => Array ([Retail] => $198.73 [SoldBy] =>) [6] => Array ([Retail] => $240.72 [SoldBy] =>) [7] => Array ([Retail] => $248.99 [SoldBy] => onSale)) 

STEPHS GREAT BOOKはDiakonos23

をTREASURES

OptimumHouse

+2

をあなたが質問にHTMLを含めることができます、私のテレパシーのスキルは、今日のために、最大使用されている... – vzwick

+0

おっと!申し訳ありません、上記のリンクを追加しました。アマゾンオファー一覧ページです。 – Reg

+0

まだリンクが表示されていません。 – GolezTrol

答えて

0

はそれを考え出した:

foreach($html->find('div.resultsset table tbody.result tr') as $article) { 
if($article->find('span.price', 0)) { 
// get retail 
$item['Retail'] = $article->find('span.price', 0)->plaintext; 
// get soldby 
if($article->find('img', 0)->getAttribute('alt') <> '') { 
$item['SoldBy'] = $article->find('img', 0)->getAttribute('alt'); } 
else {$item['SoldBy'] = $article->find('ul.sellerInformation li a b', 0)->plaintext;} 
$ret[] = $item; 
} 
} 
0

bを使用しないことが賢明であることを除けば、セレクタは異なります。 1つ目はリスト内のイメージを直接選択し、2つ目はリスト項目内のリンク内に太字のタグを必要とします。

+0

bを使うのは賢明ではないかもしれないが、この場合は選択できません。セレクタは私がseperatlyを使用する場合はどちらも動作しますが、IF文の中にはイメージが存在しない場合は動作しません。空白だけが印刷されます。 – Reg

0

あなたは

if (count($article->find('span.price'))) { 

if (count($article->find('ul.sellerInformation img'))) { 

を使用してみましたか?

+0

私はしていません。どのように私はコードにカウントを実装することができますか?私はそれが何をするのか分からないのですか?私は私のコードの代わりにそれを使ってみましたが、変更はありませんでした。まだ画像の代わりに売り手名のテキストがある場所は空白です。 – Reg

+0

気にしないで、私のばかげた考えです。 – vzwick

関連する問題