Maison  >  Article  >  développement back-end  >  Comment puis-je récupérer efficacement le contenu d’une page avec cURL ?

Comment puis-je récupérer efficacement le contenu d’une page avec cURL ?

DDD
DDDoriginal
2024-10-22 20:54:29419parcourir

How Can I Retrieve Page Content Effectively with cURL?

Comment récupérer le contenu d'une page avec cURL

Lorsque vous essayez de récupérer le contenu d'une page à l'aide de cURL, vous pouvez rencontrer des problèmes de redirection ou des erreurs de « page déplacée », en particulier si le La chaîne de requête contient des caractères spéciaux.

Pour résoudre ce problème, vous devez vous assurer que la chaîne de requête codée est traitée correctement. Voici un extrait de code amélioré qui résout ce problème :

<code class="php">/**
 * Function to retrieve a web page using cURL.
 */
function get_web_page(string $url): array
{
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

    $options = [
        CURLOPT_CUSTOMREQUEST  => "GET",        // Set request type as GET
        CURLOPT_POST           => false,        // Set to GET
        CURLOPT_USERAGENT      => $user_agent, // Set user agent
        CURLOPT_COOKIEFILE     => "cookie.txt", // Set cookie file
        CURLOPT_COOKIEJAR      => "cookie.txt", // Set cookie jar
        CURLOPT_RETURNTRANSFER => true,     // Return web page
        CURLOPT_HEADER         => false,    // Don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // Follow redirects
        CURLOPT_ENCODING       => "",       // Handle all encodings
        CURLOPT_AUTOREFERER    => true,     // Set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // Timeout on connect
        CURLOPT_TIMEOUT        => 120,      // Timeout on response
        CURLOPT_MAXREDIRS      => 10,       // Stop after 10 redirects
    ];

    $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;
}

// Example of using the function to get a web page:
$result = get_web_page('https://www.example.com/page');

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

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

$page = $result['content'];</code>

En incluant ces options supplémentaires, telles que la définition du type de requête sur GET, la fourniture d'un agent utilisateur et la gestion de tous les encodages, vous devriez pouvoir réussir récupérer le contenu de la page web souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn