卷曲无法下载网页

时间:2012-07-21 20:21:49

标签: php curl

我正在尝试打开网站的主页并使用curl使用php从html标记中提取标题和描述,我在某种程度上成功地做到了这一点,但很多网站都在那里,我无法打开。我的代码在这里:

function curl_download($Url){
     if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $output = curl_exec($ch);
    curl_close($ch); 
    return $output;
}
// $url is any url
$source=curl_download($url);
$d=new DOMDocument();
$d->loadHTML($source);
$title=$d->getElementsByTagName("title")->item(0)->textContent)
$domx = new DOMXPath($d);
$desc=$domx->query("//meta[@name='description']")->item(0);
$description=$desc->getAttribute('content');
?>

此代码适用于大多数网站,但有许多网站甚至无法打开。可能是什么原因?

当我尝试使用get_headers函数获取这些网站的标题时,它的工作正常,但这些都没有使用curl打开。其中两个网站是blogger.comlive.com

1 个答案:

答案 0 :(得分:3)

替换:

$output = curl_exec($ch);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$output = curl_exec($ch);
if (!$output) {
   echo curl_error($ch);
}

并了解Curl失败的原因。

最好始终检查函数调用的结果,看看它们是否成功,并报告它们何时失败。虽然函数可以在99.999%的时间内工作,但您需要报告失败的时间以及原因,因此如果可能的话,可以识别并修复根本原因。