我必須抓取多個網頁,比如說100到500.現在我正在使用curl來這樣做。獲取網頁的有效方式
function get_html_page($url) {
//create curl resource
$ch = curl_init();
//set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//$output contains the output string
$html = curl_exec($ch);
//close curl resource to free up system resources
curl_close($ch);
return $html;
}
我主要關心的是我的腳本獲取所有這些網頁所花費的總時間。我知道所花費的時間與我的互聯網速度成正比,因此大部分時間都是通過函數調用$html = curl_exec($ch);
來實現的。
我在想,不是一次又一次地爲每個網頁創建和銷燬curl實例,如果我只創建一次,然後只是爲每個頁面重複使用它,最後最終銷燬它。例如:
<?php
function get_html_page($ch, $url) {
//$output contains the output string
$html = curl_exec($ch);
return $html;
}
//create curl resource
$ch = curl_init();
//set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
.
.
.
<fetch web pages using get_html_page()>
.
.
.
//close curl resource to free up system resources
curl_close($ch);
?>
它會在總時間內產生任何顯着差異嗎?如果還有其他更好的方法,請讓我知道嗎?
我不認爲這個問題與他們被檢索後如何處理頁面有關 - 這與如何下載每個文件有關。 – JAL
@flexxy:是的,我明白了。但您可以使用YQL以快速方式從網站檢索內容。 – igniter