Почему не работает поиск в элементе (библиотека DiDOM)?

Добрый день. Пытаюсь спарсить страничку, используя GuzzleHttp и DiDOM.

Сначала нахожу группу элементов. Потом внутри каждого найденного элемента нужно произвести поиск.

$sportPage = $client->request('GET', 'Адрес сайта');

$response = (string) $sportPage->getBody();
$document = new DiDom\Document($response);

$cometitionQuery = $document->find('.родительский класс');

foreach ($cometitionQuery as $item)
{
    //Ругается на строчку ниже
    $competitionName = $item->find('.класс внутри выборки')->html();
    $competition[] = $competitionName;
}


В итоге получаю следующую ошибку:
Call to a member function html() on array

Раньше использовал PhpQuery, там при обходе элемента необходимо было вызывать функцию pq, чтобы получить доступ к методам find(), html()... Пытался найти нечто подобное в документации DiDOM, но ничего не нашёл.

Подскажите пожалуйста, что делаю не так.
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@DanKud
Я не знаю этой библиотеки, но не думаю, что она кардинально отличается от других. Вам же показывает ошибку, что метод html() не может быть вызван на массиве. Методом find() вы получаете массив, если даже он находит всего один элемент, это все-равно будет массив. Попробуйте так:
.....
$competitionName = $item->find('.класс внутри выборки')[0]->html();
.....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы