Попытка вызвать неопределенный метод с именем & quot; фильтр & quot; класса «DOMElement»

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

0

Решение

Проблема в том, что Crawler экземпляры (хранятся в $rows, $reviewContent и т. д.) перебираются по своему содержанию DOMElement. Вы можете создать новый Crawler экземпляр в каждом шаге цикла от этого DOMElement, как это:

foreach ($rows as $domRow) {
$row = new Crawler($domRow);
// proceed as in the original code
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]