phpQuery - скрипт выдает белую страницу

274
17 июня 2017, 14:38

Я пытался повторить материал из видеоурока про phpQuery, сверил весь код с точностью до запятой, но у меня отображается только пустая страница в итоге.

Код вроде бы совсем простой, ошибок не нахожу

<?php
    header('Content-type: text/html; charset=utf-8');
    require 'phpQuery.php';
$url='https://privatbank.ua/ru/';
$file=file_get_contents($url);
$doc = phpQuery::newDocument($file);
$tbl = $doc->find('#course-table-pb');
echo $tbl;

Не может ли такого быть, что я версию phpQuery взял какую-нибудь не такую?

Проверяется по ходу: $file - непустое $doc - непустое $tbl - пусто

Answer 1

подытожу свои комментарии. Вы загружаете страницу по указанной ссылке. Когда вы ее открываете в браузере там выполняется множество JS-кода, который в частности подгружает курсы валют. И в результате вы видите страницу такой, какой видите.

Когда вы эту же страницу загружаете через file_get_contents() вы получаете только исходный код страницы, JS скрипты никто не обрабатывает. Поэтому динамические данные не загружаются. Можете сохранить вывод file_get_contents в файл (или просмотреть исходный код страницы в браузере) и там вы не найдете элемента #courses-table-pb, который запрашиваете через phpQuery.

В инструментах разработчика в браузере вы можете наблюдать, что курсы валют запрашиваются по ссылке https://currency.privatbank.ua/ru/get-currencies

Дальше действуйте из ваших интересов. Если ваша задача - изучить phpQuery, то найдите другую страницу для практики. Если задача - получить курсы валют, то загрузите json-данные по ссылке выше, декодируйте их с помощью json_decode и используйте по своему усмотрению, а phpQuery для данной задачи не нужен.

$content = file_get_contents("https://currency.privatbank.ua/ru/get-currencies/");
$content = substr($content, 1, strlen($content)-2);
$data = json_decode($content);
$data = json_decode($data->content);
print_r($data->exchange->currency_pb);
READ ALSO
как разрешить доступ к PUT DELETE в RESTfull yii2

как разрешить доступ к PUT DELETE в RESTfull yii2

Как разрешить доступ к PUT DELETE в RESTfull yii2 ? Использую angularjs

355
Приведение даты/времени к формату и обратно

Приведение даты/времени к формату и обратно

Доброго времени сутокВопрос следующий - как привести дату/время к определённому формату, а после "выдернуть" из него дату/время

233
Как в эту строчку добавить md5? [требует правки]

Как в эту строчку добавить md5? [требует правки]

Как в эту строчку добавить md5?

292
Конвертация кодировки текста в PHP

Конвертация кодировки текста в PHP

Есть две переменные типа string: 1) задана вручную в php коде ($date1="14 июня"), 2) "содрана" при помощи cURL+phpQuery c удаленной страницы ($date2)

251