DOM Crawler и текущий список узлов пуст - как получить список

Мне нужна помощь с DOM Crawler в Symfony 3.2. Вот мой код:

$html = file_get_contents('http://www.wakacje.pl/wczasy/peru/');
$crawler = new Crawler($html);

$crawler = $crawler->filter('#gridWithPagination > div > div')->each(function (Crawler $node) {
    return $node->filter('div.desc > a');
});

foreach ($crawler as $item) {
    var_dump($item->attr('href'));
}

Как видите, я хочу получить параметр URI из всех вхождений в списке, но этот код возвращает только первое вхождение, а также ошибку:

Текущий список узлов пуст

Что я пропустил? Заранее спасибо за помощь.


person AppleandPear    schedule 07.12.2016    source источник


Ответы (1)


Не уверен, почему вам нужно фильтровать дважды, но мне кажется, что более простой селектор CSS работает для меня:

use Symfony\Component\DomCrawler\Crawler;

$html = file_get_contents('http://www.wakacje.pl/wczasy/peru/');
$crawler = new Crawler($html);

$nodes = $crawler->filter('div#gridWithPagination div.desc a');

$nodes->each(function ($item) {
    echo $item->attr('href').'<br>';
});
person PapyDanone    schedule 07.12.2016