2011-10-25 13 views
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; 
    } 
} 

这里是阵列我走出我上面的代码:

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)) 

你可以看到它缺少SoldBy为:

STEPHS伟大的书珍品

Diakonos23

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之外,您的选择器是不同的。第一个在列表项中直接选择列表中的图像,而第二个在链接内需要粗体标记。

+0

我知道使用b可能是不明智的,但在这种情况下我没有选择。如果我独立使用它们,但是在IF语句内部,如果没有图像存在,它们不起作用,这两个选择器都起作用。它只是打印空白。 – Reg

0

您是否尝试过使用

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

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

+0

我没有。我怎样才能实现代码?我不确定那会做什么?我试图用它代替我的代码,但没有改变。仍然只是空白,其中有卖家名称的文字而不是图像。 – Reg

+0

没关系,只是我的一个愚蠢的想法。 – vzwick