안녕하세요.

 

자료를 수집하다 보면 기본 자료들을 웹페이지 검색을 통해서 가져오는 부분이 많으실텐데요.

 

이때 개발자이다보니 크롤링을 해오면 되지 않을까 싶어 검색해보니 간단한 방법이 있어 소개할려고 합니다.

(개발자가 창조적이라는 말을 많이 듣지만 저도 검색으로 많은 부분을 해결합니다.)

 

오늘은 간단하게 웹페이지를 크롤링하는 방법을 알아보겠습니다.

 

예제로 tv줌 인기랭킹의 순위 및 프로그램명을 가져올까 합니다.

 

1. 웹브라우저에서 tv줌 인기랭킹 페이지를 확인합니다.(https://tv.zum.com/ranking)

 

2. 웹브라우저의 개발자도구(F12)를 통해 HTML 구조를 파악합니다. 

   (영역 : 빨간색, 순위값 : 녹색, 프로그램명 : 파란색)

 

<예시 : tv줌 예시화면>

3. simple_html_dom 사이트에서 simple_html_dom.php 다운로드를 합니다.

   다운로드 URL : https://sourceforge.net/projects/simplehtmldom/files/simplehtmldom/ 에서 최신버전 다운로드

                       (ZIP파일 압축해제 후 압축풀더 들어가면 simple_html_dom.php 파일이 보임)

   온라인 설명서 URL : http://simplehtmldom.sourceforge.net/manual.htm 개발시 참조

 

4. 개발소스

<?php

header('Content-Type: text/html; charset=UTF-8'); 

//simple_html_dom php 파일을 include함 
include('simple_html_dom.php'); 

//가져올 url 설정
$url = 'https://tv.zum.com/ranking'; 
$html = @file_get_html($url); 

unset($arr_result); 
$arr_result = $html->find('div.tv_wrap>a');   //1위 ~ 3위 랭킹순위 및 프로그램명 가져오기
if(count($arr_result) > 0){                         //위의 이미지에서 a 태그에 포함되는 html dom 객체를 가져옴
    foreach($arr_result as $e){

        //children 속성을 이용해 맨 처음(0)의 태그 가져오기(<span class="rank_num">1</span>값 가져옴)
        echo $e->children(0)->plaintext.':';     //위의 값 중 1 값을 가져옴

        //children 속성을 이용해 맨 두번째(1)의 태그(<div class="tv_info">) 안의 두번째(1)의 태그 가져오기(<p class="program">미스트롯</p>값 가져옴)
        echo $e->children(1)->children(1)->plaintext.'<br/>';     //위의 값 중 미스트롯 값을 가져옴
    } 
} else { 
    echo "<br/>"; 
} 

unset($arr_result); 
$arr_result = $html->find('div.list_wrap>div.list');   //4위 ~ 50위 랭킹순위 및 프로그램명 가져오기
if(count($arr_result) > 0){ 
    foreach($arr_result as $e){ 
        echo $e->children(1)->plaintext.':'; 
        echo $e->children(2)->children(1)->children(0)->plaintext.'<br/>'; 
    } 
} else { 
    echo "<br/>"; 
}


exit;

?>
 

정보문화사] 성공적인 웹 프로그래밍 PHP와 MySQL 단품

COUPANG

www.coupang.com

 

위와 같이 html 구조를 분석하여 가져오면 간단하게 해결할 수 있습니다.

 

하시면서 궁금한 사항 있으면 글 남겨주세요.^^

 

서로 서로 도움이 될 수 있으면 좋겠습니다.^^

 

오늘도 행복한 하루 되십시요^^

+ Recent posts