2

我正在尝试打开网站的主页,并使用 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

4

1 回答 1

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% 的时间内有效,但您需要报告它失败的次数以及失败的原因,以便在可能的情况下识别和修复根本原因。

于 2012-07-21T20:54:35.633 回答