2017-08-03 6 views
0

を使用しているとき、私はこのURLを要求していた場合の停止は、cURLのでURLを要求:例えば範囲

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

は範囲[1-3]は、クエリのページに存在することを想像してみてください。 cURLが4番に到着したときにURLを要求しないのはなぜですか?私が欲しいもの

は、ページ番号5(4ページ以降404コードを返す)

+0

cURLはリクエストを送信しているだけなので、あなたのURLが1,2,3のみで動作することをcURLがどのように知っていますか? – sheplu

+0

サーバはステータスコード(この場合は404)を返します。実際にオプション-fを指定すると、サーバがエラーステータスコードを返す場合(そしてURLを出力している場合)、ファイルは作成されません。 – user3748883

+0

はい、ただし、cURLに1から100の範囲を指定するように要求します。おそらく4は404しかし5が動作します。だから、cURLはあなたの範囲内のすべての値を試します – sheplu

答えて

0

あなたはCURLINFO_HTTP_CODEオプションでcurl_getinfo機能を使用する必要がありますを要求し始めたときに停止するようにcURLのです。 CURLINFO_HTTP_CODEは、最後に要求されたページのHTTPコードを返します。

EDIT:以下の例はページの内容を返します(その機能を望んでいない場合は変更できます)。

このループは、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++; 
} 
関連する問題