Foreach DOM 解析器

发布于 2024-12-10 03:37:27 字数 342 浏览 0 评论 0原文

有谁知道为什么这行不通?

foreach($html->find('tbody.result') as $article) {
    // get retail
    $item['Retail'] = trim($article->find('span.price', 0)->plaintext);
    // get soldby
    $item['SoldBy'] = trim($article->find('img', 0)->getAttribute('alt'));

    $articles[] = $item;
}
print_r($articles);

Does anyone know why this wouldn't work?

foreach($html->find('tbody.result') as $article) {
    // get retail
    $item['Retail'] = trim($article->find('span.price', 0)->plaintext);
    // get soldby
    $item['SoldBy'] = trim($article->find('img', 0)->getAttribute('alt'));

    $articles[] = $item;
}
print_r($articles);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风启觞 2024-12-17 03:37:27

试试这个:

$html = file_get_html('http://www.amazon.com/gp/offer-listing/B002UYSHMM');

$articles = array();

foreach($html->find('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)) $item['SoldBy'] = $article->find('img', 0)->getAttribute('alt');
    $articles[] = $item;
  }

}

print_r($articles);

Try this:

$html = file_get_html('http://www.amazon.com/gp/offer-listing/B002UYSHMM');

$articles = array();

foreach($html->find('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)) $item['SoldBy'] = $article->find('img', 0)->getAttribute('alt');
    $articles[] = $item;
  }

}

print_r($articles);
清风无影 2024-12-17 03:37:27

在我看来,原来的代码应该可以工作。但 simple_html_dom 经常会崩溃或行为不可预测。

我建议使用 php 内置的 DomXPath:

$dom = new DOMDocument;
@$dom->loadHTMLFile('http://www.amazon.com/gp/offer-listing/B002UYSHMM');
$xpath = new DOMXPath($dom);

$articles = array();
foreach($xpath->query('//tbody[@class="result"]') as $tbody){
    $item = array();
    $item['Retail'] = $xpath->query('.//span[@class="price"]', $tbody)->item(0)->nodeValue;
    $item['SoldBy'] = $xpath->query('.//img/@alt', $tbody)->item(0)->nodeValue;
    $articles[] = $item;
}

print_r($articles);

It seems to me the original code should work. But simple_html_dom often breaks or behaves unpredictably.

I recommend using php's built-in DomXPath:

$dom = new DOMDocument;
@$dom->loadHTMLFile('http://www.amazon.com/gp/offer-listing/B002UYSHMM');
$xpath = new DOMXPath($dom);

$articles = array();
foreach($xpath->query('//tbody[@class="result"]') as $tbody){
    $item = array();
    $item['Retail'] = $xpath->query('.//span[@class="price"]', $tbody)->item(0)->nodeValue;
    $item['SoldBy'] = $xpath->query('.//img/@alt', $tbody)->item(0)->nodeValue;
    $articles[] = $item;
}

print_r($articles);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文