"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > \"페이지 이동\" 오류에도 불구하고 cURL을 사용하여 페이지 콘텐츠를 검색하는 방법은 무엇입니까?

\"페이지 이동\" 오류에도 불구하고 cURL을 사용하여 페이지 콘텐츠를 검색하는 방법은 무엇입니까?

2024-11-09에 게시됨
검색:225

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