2017-08-03 25 views
0

例如,當,如果我請求這個網址:停止請求與捲曲的URL使用範圍

curl http://www.example.com/index.html?page=[1-100] 

試想一下,僅在範圍[1-3]在查詢頁面存在。爲什麼cURL在到達數字4時不會再要求網址?

我要的是捲曲停止在啓動時要求的頁碼5(因爲第4頁將返回404碼)

+0

因爲cURL只是發送請求。 cURL怎麼知道你的URL只能在1,2和3上工作? – sheplu

+0

因爲服務器返回一個狀態碼(在這種情況下爲404)。事實上,使用-f選項,如果服務器返回錯誤狀態代碼(並且您正在輸出url) – user3748883

+0

yes,但它不會創建文件,但是您要求cURL將範圍從1變爲100.也許4會是一個404但是5會工作。所以cURL會嘗試你的範圍內的每個值 – sheplu

回答

0

您應該使用curl_getinfo功能與CURLINFO_HTTP_CODE選項。 CURLINFO_HTTP_CODE返回最後請求頁面的HTTP代碼。

編輯:下面是一個例子,下面還將返回頁面的內容(假設你想要的功能,如果不是你可以修改它)。

此while循環開始於page=0,並將繼續增加到page=1, page=2, etc...,直到它到達不存在的頁面,然後跳出循環。

$response_code = 0; 
$i = 0; 

while ($response_code != 404 && $i <= 100) 
{ 
     $cURL_handler = curl_init(); 

     curl_setopt($cURL_handler, CURLOPT_URL, 'http://www.example.com/index.html?page=' . $i); 

     curl_setopt($cURL_handler, CURLOPT_RETURNTRANSFER, 1); 

     $page_content = curl_exec($cURL_handler); 

     $response_code = curl_getinfo($cURL_handler, CURLINFO_HTTP_CODE); 

     curl_close($cURL_handler); 
    $i++; 
}