Задать вопрос

Почему не работает поиск в элементе (библиотека 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, но ничего не нашёл.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽