」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 儘管出現「頁面已移動」錯誤,如何使用 cURL 檢索頁面內容?

儘管出現「頁面已移動」錯誤,如何使用 cURL 檢索頁面內容?

發佈於2024-11-09
瀏覽:508

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