Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать чтобы парсер дождался полной загрузки сайта и только тогда забирал информацию с него?

Фёдор Знаток (486), закрыт 1 год назад
Мне нужно спарсить сайт на котором находится статистика, но она долго загружается и по этому парсер берёт не цифры а надпись "загрузка". Как исправить это?
Сам скрипт-
<?php
function Parse ($p1, $p2, $p3) {
$num1 = strpos ($p1, $p2);
if ($num1 === false) return 0;
$num2 = substr ($p1, $num1);
return strip_tags (substr ($num2, 0, strpos ($num2, $p3)));
ini_set("pcre.backtrack_limit", 10000000);
}

$String = file_get_contents ('http://www.liveinternet.ru/stat/vkontakte.ru/');

echo Parse ($String, '-5,153,663', '');
/*echo '
'.Parse ($String, '', '');*/

?>
Дополнен 8 лет назад
Вот так получше будет-
<?php
function Parse ($p1, $p2, $p3) {
$num1 = strpos ($p1, $p2);
if ($num1 === false) return 0;
$num2 = substr ($p1, $num1);
return strip_tags (substr ($num2, 0, strpos ($num2, $p3)));
}

$String = file_get_contents ('http://www.internetlivestats.com');

echo Parse ($String, '', '');
/*echo '
'.Parse ($String, '', '');*/

?>
Лучший ответ
Андрей Высший разум (449940) 8 лет назад
Проблема не в том, что "статистика долго подгружается", а в том, что вероятнее всего в исходном коде страницы этой статистики вообще нет - она загружается уже после открытия страницы в браузере - JavaScript'ом через AJAX. Понятно, что PHP загруженный JavaScript не выполняет...

Второй вариант - не JS, а iframe. Но опять же - сожержимое iframe в исходном коде страницы отсутствует.

Проще всего открыть страницу в браузере и в консоли (клавиша F12) посмотреть, по какому адресу и каким запросом забирается эта статистика. А после сымитировать этот запрос в PHP посредством cURL: http://php.net/manual/ru/book.curl.php
ФёдорЗнаток (486) 8 лет назад
Но когда я решил получить статистику с Liveinternet, она вообще не выводилась, хотя там есть сами цифры в коде. Почему так?
Андрей Высший разум (449940) Потому я и предложил посмотреть, какой именно запрос выполняется - и сымитировать его именно в том виде, какой он есть - со всеми заголовками / куками / дополнительными параметрами.
Остальные ответы
Похожие вопросы