Snoopy 클래스로 웹페이지 긁어오기(크롤링) > php

본문 바로가기
사이트 내 전체검색

php

Snoopy 클래스로 웹페이지 긁어오기(크롤링)

페이지 정보

작성자 서방님 댓글 0건 조회 381회 작성일 15-02-24 09:00

본문

출처 : http://dovetail.tistory.com/38


스누피 클래스

다른 웹페이지에 있는 정보를 가져와서 재가공 해야하는 경우, 일일이 수작업으로 할수만은 없죠. 이럴때 스누피를 요긴하게 사용합니다.

먼저 스누피 클래스를 여기에서 받습니다. 다운로드 받은 파일중에 Snoopy.class.php만 있으면 됩니다. 서버나 호스팅 사이트에 FTP로 업로드해서 사용하면 되겠습니다. 1.2.4 버전이 나온지가 꽤 되었는데 아직도 그대로네요..

스누피에는 대표적으로 다음과 같은 함수가 있습니다.

  1. fetch($URI) : 입력받은 주소의 html소스를 텍스트 형식으로 $results에 저장합니다.
  2. fetchlinks($URI) : fetch와 비슷하지만 링크만을 배열의 형태로 $results에 저장합니다. 링크를 타고가야할 필요가 있는 작업에 유용하겠죠?
  3. fetchtext($URI) : fetch와 비슷하지만 스크립트를 제외한 텍스트만 $results에 저장합니다.
  4. fetchform($URI) : fetch와 비슷하지만 폼 부분을 html형식으로 $results에 저장합니다.
  5. submit($URI, $formvars="", $formfiles="") : 폼에 여러 변수를 붙여서 전송 할 수 있습니다. 보통 많은 로그인이 폼으로 이루어지므로 유용하게 사용됩니다.
  6. setcookies() : 종종 쿠키정보를 유지해야하는 경우가 있는데 그럴때 사용합니다.

...함수의 목록만 보더라도 두근거리지 않으신가요? :)

간단하게 귀찮은 작업을 자동화할 수 있다는 점이 매력적이네요.

예제

간단히 예제를 보도록 하겠습니다.

<?php
//Snoopy.class.php를 불러옵니다
require($_SERVER['DOCUMENT_ROOT'].'/디렉토리/Snoopy.class.php');

//스누피를 생성해줍시다
$snoopy = new Snoopy;

//스누피의 fetch함수로 제 웹페이지를 긁어볼까요? :)
$snoopy->fetch('http://dovetail.tistory.com/38');

//결과는 $snoopy->results에 저장되어 있습니다
//preg_match 정규식을 사용해서 이제 본문인 article 요소만을 추출해보도록 하죠
preg_match('/<div class="article">(.*?)<\/div>/is', $snoopy->results, $text);

//이제 결과를 보면...?
echo $text[1];
?>

음.. 좋군요? 이제 크론과 DB도 사용하면 본격적인 크롤링이 가능하겠습니다.

하지만 웹페이지를 본격적으로 크롤링 하기위해서는 메타태그의 robot 설정과 robot.txt의 규칙을 준수해야 합니다. 그리고 너무 많은 접속을 할 경우 제제를 당할 수 있으니 주의해야 하겠습니다.

댓글목록

등록된 댓글이 없습니다.

Total 612건 20 페이지
게시물 검색

회원로그인

접속자집계

오늘
63
어제
163
최대
1,347
전체
154,597
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.