我想打開網頁的主頁,並從它的HTML標記中提取標題和描述使用curl與PHP,我成功地做到了這一點,但許多網站在那裏我無法打開。我的代碼在這裏:curl無法下載網頁
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.com
和live.com
。
會發生什麼情況?任何錯誤? – tiwo 2012-07-21 20:27:24
只是猜測......他們是否可能阻止捲曲(因爲curl尊重'robots.txt',或者通過在curl的請求頭上皺眉)服務器端? – tiwo 2012-07-21 20:27:38
沒有錯誤,只是不返回任何內容,我試着直接使用file_get_contents函數打開,結果相同,但不能。 – Sourabh 2012-07-21 20:30:16