cURL とエラー処理を使用してページ コンテンツを効率的に抽出する方法

DDD
リリース: 2024-10-22 20:34:26
オリジナル
366 人が閲覧しました

How to Efficiently Extract Page Content Using cURL with Error Handling?

cURL を使用してページ コンテンツを抽出する方法: 詳細な解決策

問題を理解する

cURL では、リダイレクトや「ページが移動されました」エラーが発生することがよくあります。これは、クエリ文字列内の特別にエンコードされた文字が原因であることがよくあります。

cURL の最適化:

これらの問題が発生せずにページ コンテンツを効果的に取得するには、次のように cURL コードを最適化します。

<code class="php">function get_web_page($url) {
    $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

    $options = array(
        CURLOPT_CUSTOMREQUEST  => "GET",
        CURLOPT_POST           => false,
        CURLOPT_USERAGENT      => $user_agent,
        CURLOPT_COOKIEFILE     => "cookie.txt", 
        CURLOPT_COOKIEJAR      => "cookie.txt",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER         => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING       => "",
        CURLOPT_AUTOREFERER    => true,
        CURLOPT_CONNECTTIMEOUT => 120,
        CURLOPT_TIMEOUT        => 120,
        CURLOPT_MAXREDIRS      => 10,
    );

    $ch      = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err     = curl_errno($ch);
    $errmsg  = curl_error($ch);
    $header  = curl_getinfo($ch);
    curl_close($ch);

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}</code>
ログイン後にコピー

例:

ページの読み取り中に潜在的なエラーを取得して処理します:

<code class="php">$result = get_web_page($url);

if ($result['errno'] != 0)
    // Error handling for invalid URL, timeout, or redirect loops.

if ($result['http_code'] != 200)
    // Error handling for issues like missing page, permission denial, or unavailability.

$page = $result['content'];</code>
ログイン後にコピー

以上がcURL とエラー処理を使用してページ コンテンツを効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート