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

Patricia Arquette
リリース: 2024-10-22 20:52:03
オリジナル
508 人が閲覧しました

How to Retrieve Page Content Using cURL Despite

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

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

この問題は、クエリ文字列内の特殊文字のエンコーディングに起因している可能性があると考えられています。これを軽減するには、PHP コードを変更する必要があります。

アプローチは次のとおりです:

<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) {
    // Handle errors: bad URL, timeout, redirect loop
}

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

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

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

以上が「ページが移動されました」エラーにもかかわらず cURL を使用してページ コンテンツを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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