Получить HTML-контент после полной загрузки страницы с помощью curl

0

У меня здесь проблема. Когда я загружаю страницу, для отображения полного результата требуется не менее 10 секунд. Когда я использую curl, он отображает только html-содержимое страницы во время выполнения. Я хочу, чтобы завиток подождал не менее 10 секунд, чтобы получить полный результат. Это мой код,

<?php

$cookie = tmpfile();
$userAgent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31' ;

$ch = curl_init('http://filippo.io/Heartbleed/#www.example.com:433');

$options = array(
    CURLOPT_CONNECTTIMEOUT => 20 , 
    CURLOPT_USERAGENT => $userAgent,
    CURLOPT_AUTOREFERER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $cookie,
    CURLOPT_COOKIEJAR => $cookie ,
    CURLOPT_SSL_VERIFYPEER => 0 ,
    CURLOPT_SSL_VERIFYHOST => 0
);

curl_setopt_array($ch, $options);
$kl = curl_exec($ch);
curl_close($ch);
echo $kl;
?>

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

  • 0
    Я полагаю, вы ссылаетесь на код, который загружается после открытия страницы. Если это так, вы не можете получить этот код с помощью curl, поскольку это ajax url. Вам нужно будет найти URL-адрес ajax в консоли Chrome, а затем получить его вместо главной страницы.
Теги:
curl

2 ответа

2

Я не уверен, где вы получили 10 секунд. На моем ноутбуке среднего класса Linux для загрузки в Firefox потребовалось около 3 секунд. Однако то, что вы вводите в заблуждение, - это время, которое требуется для загрузки страницы HTML, и времени, которое требуется для загрузки всего дополнительного/динамического содержимого.

Когда вы нажимаете на URL-адрес, вы получаете очень маленькую статическую HTML-страницу вместе с некоторыми javascript, css, изображениями и т.д. Задержка, которую вы видите, - это время, необходимое для выполнения javascript-запросов AJAX, а также для изображений,,

Если вы используете curl, вы получаете статический HTML-код и ничего больше вместе с ним. Никакая задержка не поможет вам получить полную информацию, если вы не планируете внедрять полный механизм JavaScript и анализатор HTML, а затем загружать все остальные ресурсы, выполняя, при необходимости, код JavaScript.

Я настоятельно рекомендую вам пересмотреть свой подход.

1

Добавьте это в свой массив $options: CURLOPT_TIMEOUT => 10 где 10 - это количество секунд, в течение которых вы хотите, чтобы он дождался тайм-аута.

http://altafphp.blogspot.com/2012/12/difference-between-curloptconnecttimeou.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню