$goutte = new GoutteClient();
$crawler = $goutte->request('GET', 'https://www.website.com');
$reviewContent = $crawler->filter('.review-content');
$rows = $reviewContent->filter('.row');
foreach ($rows as $row) {
$col1 = $row->filter('.col-md-3');
$col2 = $row->filter('.col-md-9');
}
Давать ошибку на $col1
Я могу заставить его работать, используя это, но вы не можете использовать break
как это не реально for loop
$crawler->filter('.row')->each(function (Crawler $row, $i) {
$col1 = $row->filter('.col-md-3');
$col2 = $row->filter('.col-md-9');
...
...
}
Проблема в том, что Crawler
экземпляры (хранятся в $rows
, $reviewContent
и т. д.) перебираются по своему содержанию DOMElement. Вы можете создать новый Crawler
экземпляр в каждом шаге цикла от этого DOMElement
, как это:
foreach ($rows as $domRow) {
$row = new Crawler($domRow);
// proceed as in the original code
}
Других решений пока нет …