使用curl完全加载页面后获取html内容

时间:2014-04-15 11:55:46

标签: php html curl

我在这里遇到了一些问题。当我加载页面时,至少需要10秒才能显示完整的结果。当我使用curl时,它只在运行时显示页面的html内容。我希望curl等待至少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;
?>

请告诉我在哪里犯错误&amp;我可以删除或添加什么来使脚本工作。感谢

3 个答案:

答案 0 :(得分:2)

我不知道你从哪里得到10秒钟。在我的中档Linux笔记本电脑上,该页面在Firefox中加载大约需要3秒钟。然而,令人困惑的是HTML页面加载所需的时间与加载所有其他/动态内容所需的时间。

当您点击URL时,您会得到一个非常小的静态HTML页面以及一些javascript,css,图像等。您看到的延迟是javascript执行AJAX请求以及图像所需的时间以合理的方式加载。

如果您使用curl,那么您只会获得静态HTML - 并且没有任何其他内容。没有延迟将帮助您获得完整信息,除非您计划实施完整的JavaScript引擎和HTML解析器,然后加载所有其他资源,根据需要执行javascript代码。

我强烈建议你重新考虑一下你的做法。

答案 1 :(得分:1)

将其添加到您的$options数组中:CURLOPT_TIMEOUT => 10其中10是您希望它在超时之前等待的秒数。

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

答案 2 :(得分:0)

我也有同样的问题。 但是CURLOPT_CONNECTTIMEOUT是一个值,这意味着如果curl在这段时间内无法连接到文件,它将放弃。 CURLOPT_TIMEOUT是一个值,这意味着如果curl在连接后的这段时间内无法爬网此文件,它将放弃。 因此,没有任何值可以在特定的秒后设置curl函数爬网。 您可以使用JavaScript代码将此文件加载到窗口中并对其进行爬网。 或者,您可以使用Python网络驱动程序