有谁可以告诉为什么第二个if语句拉动售卖名称不能正常工作?
我想要它做的是名称从图像中拉出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 GREAT BOOK TREASURES
Diakonos23
OptimumHouse
答案 0 :(得分:0)
除了明智地不使用b
之外,你的选择器也是不同的。第一个直接选择列表中的图像,而第二个需要在列表项内的链接内部使用粗体标记。
答案 1 :(得分:0)
您是否尝试过使用
if (count($article->find('span.price'))) {
和
if (count($article->find('ul.sellerInformation img'))) {
答案 2 :(得分: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;
}
}