2011-04-01 43 views
3

我建立一個網站爬蟲,並使用這些選項cURL class爲獲得頭,這樣我就可以下載完整的網站非常它text/html和低於指定大小之前提取其mime/typecontent-length限制。curl_getinfo返回-1爲內容長度

這些都是我的捲曲選項

$c->setopt(CURLOPT_URL, $theURL); 
$c->setopt(CURLOPT_HEADER, false); 
$c->setopt(CURLOPT_RETURNTRANSFER, true); 
$c->setopt(CURLOPT_TIMEOUT, 10); 
$c->setopt(CURLOPT_CONNECTTIMEOUT, 10); 
$c->setopt(CURLOPT_NOBODY, TRUE); 
$c->setopt(CURLOPT_FOLLOWLOCATION, TRUE); 
$c->setopt(CURLOPT_MAXREDIRS, 2); 

// Within Class 
$theReturnValue = curl_exec($this->m_handle); 
$this->m_status = curl_getinfo($this->m_handle) ; 

,但它總是返回[download_content_length] => -1即使沒有CURLOPT_NOBODY然而retrived數據(整個文件)是正確的。

+0

也許服務器ISN」發送「內容長度」標題? – drudge 2011-04-01 20:22:07

+0

對不起,沒有足夠的信息(我已經編輯了問題)..但是,這似乎確實如此,當我想檢索html頁面時應該怎麼做? – Shishant 2011-04-01 20:28:18

回答

4

CURLINFO_CONTENT_LENGTH_DOWNLOAD的libcurl的文檔(這是PHP使用綁定的)說:

「這個返回-1如果大小是不知道」

+0

有沒有辦法強制獲取大小,而不是先下載它? – Shishant 2011-04-01 20:38:55

+4

不可以。您不能強制服務器返回「Content-Length」標頭。動態生成的頁面通常會忽略此標題,因爲標題通常在頁面甚至完全呈現在服務器端之前發送 - 在發送標題時,甚至服務器都不知道頁面的大小。 – 2011-04-01 20:56:41

相關問題