「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 「ページが移動されました」エラーにもかかわらず cURL を使用してページ コンテンツを取得する方法

「ページが移動されました」エラーにもかかわらず cURL を使用してページ コンテンツを取得する方法

2024 年 11 月 9 日に公開
ブラウズ:172

How to Retrieve Page Content Using cURL Despite \

cURL を使用したページ コンテンツの取得

このコンテキストでは、cURL を使用して Google 検索結果ページのコンテンツを取得しようとします。ユーザー エージェントやさまざまなオプションを設定しようとしましたが、ページ コンテンツを正常に取得できませんでした。リダイレクトまたは「ページが移動されました」エラーが引き続きあなたの努力を悩ませています。

この問題は、クエリ文字列内の特殊文字のエンコーディングに起因している可能性があると考えられています。これを軽減するには、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;
}

使用法:

$result = get_web_page($url);

if ($result['errno'] != 0) {
    // Handle errors: bad URL, timeout, redirect loop
}

if ($result['http_code'] != 200) {
    // Handle errors: no page, no permissions, no service
}

$page = $result['content'];

このコードを使用すると、ブラウザに表示される正確なページ コンテンツを取得できるようになります。クエリ文字列内の特殊文字を考慮することで、以前に直面した障害を克服できます。

リリースステートメント この記事は次の場所に転載されています: 1729596678 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3