DOM 爬虫和当前节点列表为空 - 如何获取列表

App*_*ear 2 symfony domcrawler

我需要有关 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'));
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我想从列表中的所有实例中获取 URI 参数,但此代码仅返回第一个实例,并且还返回一个错误:

当前节点列表为空

我错过了什么?预先感谢您的帮助。

小智 6

不知道为什么你需要过滤两次,但一个更简单的 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>';
});
Run Code Online (Sandbox Code Playgroud)