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

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

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

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

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