Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Kembali Kandungan Halaman Menggunakan cURL Walaupun Ralat \"Halaman Dialihkan\"?

Bagaimana untuk Mendapatkan Kembali Kandungan Halaman Menggunakan cURL Walaupun Ralat \"Halaman Dialihkan\"?

Patricia Arquette
Patricia Arquetteasal
2024-10-22 20:52:03435semak imbas

How to Retrieve Page Content Using cURL Despite

Mengambil Kandungan Halaman Menggunakan cURL

Dalam konteks ini, anda berusaha untuk mengikis kandungan halaman hasil carian Google menggunakan cURL. Walaupun cuba untuk menetapkan ejen pengguna dan pelbagai pilihan, kejayaan mendapatkan semula kandungan halaman telah mengelakkan anda. Ralat ubah hala atau "halaman dialihkan" terus mengganggu usaha anda.

Adalah dipercayai bahawa isu ini mungkin berpunca daripada pengekodan aksara khas dalam rentetan pertanyaan. Untuk mengurangkan perkara ini, pindaan pada kod PHP anda diperlukan.

Berikut ialah pendekatannya:

<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>

Penggunaan:

<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>

Dengan ini kod, anda kini boleh mendapatkan semula kandungan halaman yang tepat seperti yang dipaparkan dalam penyemak imbas anda. Dengan mengambil kira aksara khas dalam rentetan pertanyaan, anda boleh mengatasi halangan yang anda hadapi sebelum ini.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Kandungan Halaman Menggunakan cURL Walaupun Ralat \"Halaman Dialihkan\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn