>  기사  >  백엔드 개발  >  오류 처리와 함께 cURL을 사용하여 페이지 콘텐츠를 효율적으로 추출하는 방법은 무엇입니까?

오류 처리와 함께 cURL을 사용하여 페이지 콘텐츠를 효율적으로 추출하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-22 20:34:26378검색

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

cURL을 사용하여 페이지 콘텐츠를 추출하는 방법: 자세한 솔루션

문제 이해

cURL을 사용하여 웹페이지의 HTML 콘텐츠를 스크랩하려고 할 때 cURL을 사용하는 경우 리디렉션 또는 '페이지 이동' 오류가 발생하는 것이 일반적입니다. 이는 종종 쿼리 문자열에 특수하게 인코딩된 문자가 원인일 수 있습니다.

cURL 최적화:

이러한 문제가 발생하지 않고 페이지 콘텐츠를 효과적으로 검색하려면 다음과 같이 cURL 코드를 최적화하세요.

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

위 내용은 오류 처리와 함께 cURL을 사용하여 페이지 콘텐츠를 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.