基本的なスクレイピングを独学で学んでいるのですが、コードに入力した URL が 404 を返すことがあり、それがコードの残りの部分すべてを台無しにしてしまうことが分かりました。
したがって、URL が 404 を返すかどうかを確認するために、コードの先頭にテストが必要です。
これはかなり簡単な作業のように思えますが、Google は何も答えてくれません。間違ったものを検索しているのではないかと心配です。
あるブログではこれを使うことを勧めていました:
$valid = @fsockopen($url, 80, $errno, $errstr, 30);
次に、$valid が空かどうかをテストします。
しかし、問題が発生している URL にはリダイレクトがあるため、すべての値に対して $valid が空になります。あるいは、何か他の間違いをしているのかもしれません。
「ヘッド リクエスト」についても調べてみましたが、実際に試したり操作したりできるコード例はまだ見つかっていません。
提案はありますか?curl とは何ですか?
ベストアンサー1
PHPを使用している場合curl
バインディング、エラーコードを確認するには、curl_getinfo
そのような:
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);
/* Check for 404 (file not found). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
/* Handle 404 here. */
}
curl_close($handle);
/* Handle $response here. */