2016-12-07 10 views
0

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

$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 из всех вхождений в списке, но этот код возвращает только первый экземпляр, а также об ошибке:

The current node list is empty

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

ответ

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>'; 
});