我目前正在使用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>
。
有没有办法可以获得所有列表项?
答案 0 :(得分: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);