반응형
웹 사이트에 돌아다니는 필요한 정보를 수집하는 것을 크롤링이라고 한다. 보통 스크래핑이라고도 부른다.
정확한 뜻은 "웹 사이트에서 데이터를 추출하는 행위" 이다.
크롤링의 활용 예시)
1. 경쟁사 쇼핑몰의 가격정보를 추출
2. 유머게시판, 자유게시판의 데이터를 추출
3. 주식 정보를 추출
....
웹 사이트상에서 url로 접근 되는곳의 정보는 모두 추출 할 수 있다고 보면 된다. (단 노가다가 필요하고, 저작권 등에 문제가 발생할 수 있다. )
여기서 "노가다"가 필요하다고 한 이유는 웹 페이지의 내용을 가져오기 위해서는 html구조를 보고 규칙을 파악하여야 한다는 것이다. 그 안에서 최적의 방법으로 데이터를 가져오면 된다.
simple_html_dom에 대한 정보는 아래의 사이트를 가면 자세히 볼 수 있으며, 소스를 받고 예시들을 참조해서 사용하면 된다.
아래는 직접 dcinside의 실시간 베스트 글을 크롤링한 결과물이다.
아래는 작성 했던 코드인데, 실제로 사용하려면 iframe으로 빠진것을 img src를 다운받게 한 후 나머지 처리 등 나머지 태그들에 대해서도 분석하여 처리가 필요하다. 그리고 중간에 sleep이 들어간 이유는 빠르게 접속하게되면 일반적으로 ip차단을 하는곳이 있기에 넣었다. 조금만 수정하고 추가하면 충분히 이미지까지 크롤링해서 가져올 수 있을것으로 보인다.
<?php
include("simple_html_dom.php");
//상수 선언
$SLEEP = 2;
//사용 함수(예정)
$html = file_get_html('https://www.dcinside.com/');
$idx =0;//테스트용
//실시간 베스트 가져오기
foreach($html->find('.time_best li > a') as $a ){
sleep($SLEEP);
$board_data = file_get_html ($a->href);
$url = $a->href;
$title = $board_data->find('.title_subject',0);
$writer = $board_data->find('.gall_writer .nickname',0);
$contents = $board_data->find('.gallview_contents .write_div',0);
//이미지 출력
foreach($contents->find('img') as $img){
if($img->attr['onclick']){
$img_url = explode('\'', $img->attr['onclick']);
//이미지를 저장 후 기존 contents에서 찾아서 replace시킬것(iframe은 임시 테스트)
echo "<iframe src='$img_url[1]'></iframe>";
}
else{//onClick이 attr을 이용하여 생성(첫번째 이미지에 해당)
}
}
echo $url;
echo '<br>';
echo $title;
echo '<br>';
/*
echo $writer;
echo '<br>';
echo $contents;
*/
//테스트용
$idx++;
if($idx==2)
break;
}
?>
728x90
'php' 카테고리의 다른 글
php textarea글을 가져와서 출력하는 방법 feat nl2br (0) | 2022.07.20 |
---|---|
php 에러 보이도록 설정 error_reportion / display_errors (0) | 2022.07.15 |
[php] include, require 차이점에 대해 (0) | 2022.06.16 |
중복되지 않는 코드 발급 feat codeigniter (0) | 2022.04.20 |
ie에서 파일 다운로드 한글 깨짐 (0) | 2022.04.15 |
댓글