Maison  >  Article  >  développement back-end  >  Comment extraire efficacement le contenu d'une page à l'aide de cURL avec gestion des erreurs ?

Comment extraire efficacement le contenu d'une page à l'aide de cURL avec gestion des erreurs ?

DDD
DDDoriginal
2024-10-22 20:34:26371parcourir

How to Efficiently Extract Page Content Using cURL with Error Handling?

Comment extraire le contenu d'une page à l'aide de cURL : une solution détaillée

Comprendre le problème

Lorsque vous tentez de récupérer le contenu HTML d'une page Web à l'aide cURL, il est courant de rencontrer des redirections ou des erreurs de « page déplacée ». Cela peut souvent être attribué à des caractères spécialement codés dans la chaîne de requête.

Optimisation pour cURL :

Pour récupérer efficacement le contenu de la page sans rencontrer ces problèmes, optimisez votre code cURL comme suit :

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

Exemple :

Récupérer et gérer les erreurs potentielles lors de la lecture de la page :

<code class="php">$result = get_web_page($url);

if ($result['errno'] != 0)
    // Error handling for invalid URL, timeout, or redirect loops.

if ($result['http_code'] != 200)
    // Error handling for issues like missing page, permission denial, or unavailability.

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

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