2015-08-11 6 views
0
$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Пытались вызвать неопределенный метод под названием «фильтр» класса «DOMElement»

я могу заставить его работать, используя это, но вы не можете использовать break, как это не настоящая for loop

$crawler->filter('.row')->each(function (Crawler $row, $i) { 
    $col1 = $row->filter('.col-md-3'); 
    $col2 = $row->filter('.col-md-9'); 
    ... 
    ... 
} 
+0

@ raina77ow Вы хотите положить, что в ответ? – Jonathan

+0

Да, если это работает; К сожалению, не могу это проверить.) – raina77ow

+0

@ raina77ow. Ваш комментарий отлично работает и просто спас меня сзади. Если бы это был ответ, я мог бы отметить это! –

ответ

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^