현재 위치: > 최신 기사 목록> 신속하게 PHP 크롤러 개발 : HTTP 요청에서 데이터 구문 분석에 이르기까지의 전체 프로세스

신속하게 PHP 크롤러 개발 : HTTP 요청에서 데이터 구문 분석에 이르기까지의 전체 프로세스

gitbox 2025-06-24

1. 크롤러 소개

Crawler는 인터넷에서 정보를 수집하도록 설계된 자동화 된 프로그램입니다. 브라우저 동작을 시뮬레이션하고 웹 페이지에 액세스하며 대상 데이터를 추출합니다. 강력한 서버 측 스크립팅 언어로서 PHP는 효율적인 크롤러 프로그램을 작성하는 데 사용될 수 있습니다.

2. PHP에서 크롤러를 구현하기위한 단계

2.1. HTTP 요청을 보내십시오

크롤러의 첫 번째 단계는 HTTP 요청을 통해 대상 웹 페이지의 컨텐츠를 얻는 것입니다. PHP는 HTTP 요청을 보내는 다양한 방법을 제공합니다. 가장 간단하고 가장 일반적으로 사용되는 것은 file_get_contents () 함수입니다.

 
$url = "http://example.com";
$html = file_get_contents($url);

file_get_contents () 함수를 사용하여 웹 페이지의 HTML 소스 코드를 직접 얻고 변수 $ html 에 저장하십시오.

2.2. 구문 분석 HTML

웹 페이지 소스 코드를 얻은 후 필요한 정보를 추출하려면 HTML을 구문 분석해야합니다. PHP의 내장 DomDocument 클래스는 XML 및 HTML 문서를 처리하는 데 이상적입니다.

 
$dom = new DOMDocument();
@$dom->loadHTML($html);

여기서 LoadHtml () 메소드는 후속 데이터 작업을 용이하게하기 위해 HTML 문자열을 DOM 객체로 변환하는 데 사용됩니다. HTML 파싱 중에 경고 메시지를 피하기 위해 @ 추가에주의하십시오.

2.3. XPath를 사용하여 데이터를 추출합니다

XPath는 XML 및 HTML 문서에서 노드를 찾는 데 사용되는 쿼리 언어입니다. DomxPath 클래스와 결합하여 웹 페이지에서 대상 요소를 쉽게 찾아서 추출 할 수 있습니다.

 
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//h1");
foreach ($elements as $element) {
  echo $element->nodeValue;
}

위의 코드는 XPath 표현식 "// h1"을 통해 배치됩니다.

태그와 텍스트 콘텐츠를 하나씩 출력합니다.

3. 크롤러 예 : 크롤링 웹 페이지 제목

3.1. 코드 구현

 
$url = "http://example.com";
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//title");
if ($elements->length > 0) {
  $title = $elements->item(0)->nodeValue;
  echo $title;
} else {
  echo "No title found";
}

이 코드는 먼저 웹 페이지 소스 코드를 요청한 다음 HTML을 구문 분석하고 마지막으로 xpath를 통해 찾습니다. 태그, 출력 웹 페이지 제목. </p> <h3> 3.2. 실행 결과 </h3> <p> 대상 웹 페이지의 제목이 "예제 웹 사이트"인 경우 위 코드를 실행하면 제목 텍스트가 출력됩니다. </p> <h3> 4. 요약 </h3> <p> PHP를 사용하여 크롤러가 웹 페이지 데이터를 쉽게 얻을 수 있도록합니다. 이 기사는 HTTP 요청을 보내고 HTML을 구문 분석하고 XPath를 사용하여 정보 추출을 사용하는 기본 단계를 소개하고 예제를 통해 특정 구현을 보여줍니다. 이러한 내용을 마스터 한 후에는보다 복잡한 크롤링 작업을 달성하기 위해 요구에 따라 기능을 확장하고 사용자 정의 할 수 있습니다. </p> </div> </div> <!--<div class="b_box"> <div class="title_text"><i class="iconfont icon-jiangzhang"></i></div> <ul class="img_text_template"> </ul> </div>--> </div> <div class="right_box "> <div class="b_box"> <div class="widget_box"> <ul class="yyfl_box"> <li><a href="/ko/php/file_get_contents.html">file_get_contents</a><i class="iconfont icon-AIGC-81"></i></li> </ul> </div> </div> <div class="b_box"> <div class="title_text"><i class="iconfont icon-wenzhangguanli"></i>관련 콘텐츠</div> <ul class="img_text_template lr"> <li> <span class="img_item"> <img src="/files/images/20250624/202506241358149162.jpg" alt="PHP에서 크롤러를 구현하는 과정에 대해 10 분"> </span> <div class="content"> <a href="/ko/20d45ce17bac24e89.html" class="desc link_a"> PHP에서 크롤러를 구현하는 과정에 대해 10 분 </a> </div> </li> </ul> </div> </div> </div> </section> <footer class="footer_template"> <div class="w12_box"> <div class="desc"> <div class="f_log"> <a href=""><img src="/images/logo.png" alt="gitbox.net"></a> </div> <div class="content">주요 프로그래밍 언어의 함수 사용법과 실전 팁을 모아 핵심 지식을 효율적으로 익히고 다양한 개발 과제를 쉽게 해결할 수 있도록 도와드립니다. </div> <div class="info">코드 학습용 저장소 - gitbox.net</div> </div> <dl> <dd> <h3></h3> </dd> <dd> <h3></h3> </dd> </dl> </div> <div class="other"> <p></p> </div> </footer> </body> <script src="/js/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="/js/lazy.js" type="text/javascript" charset="utf-8"></script> <script src="/js/swiper.min.js" type="text/javascript" charset="utf-8"></script> <script src="/js/viewer.js" type="text/javascript" charset="utf-8"></script> <script src="/js/index.js" type="text/javascript" charset="utf-8"></script> <script> commonMethod.wz(); function ctrVideo(str){ console.log(str); $(".ytp-play-button").each(function(){ let status = $(this).attr("data-title-no-tooltip"); if(status === "Pause" && status!=str){ console.log("Pause"); $(this).trigger("click"); } }) } window.addEventListener('popstate', function() { ctrVideo(""); }); $(".left_box").on("click",".ytp-large-play-button",function(){ console.log("midddle button") let status = $(".ytp-play-button").attr("data-title-no-tooltip"); ctrVideo(status); }) $(".content_template").on("click",".ytp-play-button",function(){ console.log("play button") let status = $(this).attr("data-title-no-tooltip"); ctrVideo(status); }) </script> </html>