【问题标题】:PHP Simple HTML DOM Parser return all list itemsPHP Simple HTML DOM Parser 返回所有列表项
【发布时间】:2015-01-27 05:22:52
【问题描述】:

我目前正在使用 PHP Simple HTML DOM Parser 尝试抓取网站。这是我目前所拥有的:

$html = file_get_html('https://www.example.com');

// Find all article blocks
foreach($html->find('.plan') as $article) {
    $item['title']     = $article->find('.price', 0)->plaintext;
    $item['intro']   = $article->find('li', 0)->plaintext;
    $item['details'] = $article->find('.button', 0)->href;
    $articles[] = $item;
}

print_r($articles);

上面的工作正常,但是如果存在多个<li>,它只会返回第一个<li>,而忽略其余部分。

有没有办法获取所有列表项?

【问题讨论】:

    标签: php parsing dom


    【解决方案1】:

    使用 find-function 中的第二个属性,您可以定义结果的第 n 个元素,它应该被返回。在您的示例中,$article->find('li',0) 为您提供匹配元素的索引 0(即第一个)处的 li 元素。

    如果你想要所有 <li> 元素,试试这个:

    $html = file_get_html('https://www.example.com');
    
    // Find all article blocks
    foreach($html->find('.plan') as $article) {
        $item['title']   = $article->find('.price', 0)->plaintext;
        $item['intro']   = array(); //define as array
        foreach ($article->find('li') as $li) { //get all <li>-elements as array
            $item['intro'][] = $li->plaintext; //add the plaintext of each single <li> element as new position to the $item['intro'] array
        }
        $item['details'] = $article->find('.button', 0)->href;
        $articles[] = $item;
    }
    
    print_r($articles);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多