URL :  http://sourceforge.net/projects/snoopy/

include 'class.snoopy.php';

$snoopy=new snoopy;

$snoopy->fetch("http://l2j.co.kr");

$txt=$snoopy->results;

$rex="/[0-9]{4}/";

preg_match_all($rex,$txt,$o);

print_r($o);


전화번호만 뽑아내기

$rex="/[0-9]{3}-[0-9]{4}-[0-9]{4}/"

이메일만 뽑아내기 
요즘엔 이런식으로 이메일 수집을 못하게 이미지로 처리하는 경우가 많다.

$rex="/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/";

특정태그로 둘러 쌓인 내용만 뽑아내기

이 녀석이 핵심이다. 보통 영어로만 된 경우에는 [A-Za-z]* 라고 하면 되는데, 한글일 경우 참으로 애매해진다. 그럴때 아래와 같은 꽁수(?)를 쓴다.

$rex="/\<span id=\"moonseller\"\>[>^]\<\/span\>/";


본격적으로 snoopy를 이용해서 나눔로또 페이지를 긁어보자.


  1. 먼저 snoopy 클래스를 만든다
  2. include_once 'class.snoopy.php';  
    $snoopy = new snoopy;

  3. 나눔로또 당첨번호 안내 페이지 주소를 긁어온다. 
     
    $kai 는 회차를 나타낸다.
  4. $getUrl = "http://www.645lotto.net/result/guide_win_number.asp?sltSeq=".$kai;

    $snoopy->fetch($getUrl);

  5. 번호부분의 패턴을 분석해서 번호만 빼온다.
  6. $pattern='/img src="..\/images\/result\/ball[0-9]*.gif/';  
    preg_match_all($pattern,$snoopy->results,$out);   
    for($i=0;$i<=6;$i++){  
         $num[$i]=str_replace(".gif","",str_replace('img src="../images/result/ball',"",$out[0][$i]));  
    }

여기서 $num[0]~$num[5] 는 로또번호고, $num[6]은 보너스번호다.

소스 전체는 아래와 같다.

include_once 'class.snoopy.php'; 
$snoopy = new snoopy; 
$getUrl = "http://www.645lotto.net/result/guide_win_number.asp?sltSeq=".$kai; 
$snoopy->fetch($getUrl); 
$pattern='/img src="..\/images\/result\/ball[0-9]*.gif/'; 
preg_match_all($pattern,$snoopy->results,$out);  
for($i=0;$i<=6;$i++){ 
     $num[$i]=str_replace(".gif","",str_replace('img src="../images/result/ball',"",$out[0][$i])); 

}

이렇게 긁어온 번호들을 디비로 넣으면 모든 작업은 끝이다. 이 프로그램을 토요일 밤에 한번씩 돌려주면 최신 로또번호를 가져올수가 있다. 토요일밤마다 돌려주기 귀찮으면 crontab 이나 스케줄러를 쓰면 되는데 보통 cafe24같은 호스팅에서는 지원해주지 않는다.

그래서 내가 쓰는 꽁수는 feedburner 를 이용하는것이다.

feedburner를 이용한 주기적인 프로그램 실행(crontab 대용)


이정도 작업을 하고 나서 손털면 매주 자동으로 로또번호들이 자기의 디비에 차곡 차곡 쌓인다.뱀로또(http://bemlotto.com/) 에 이번회차 당첨번호 부분이 이렇게 만들어지고 있다.
 

 

'php' 카테고리의 다른 글

PHPExcel  (0) 2012.04.17
[PHP] 비교 연산자  (0) 2012.03.26
array_merge  (0) 2012.02.15
ob_start  (0) 2012.02.15
피카사 웹 앨범으로 PHP 응용 프로그램 개발하기  (0) 2011.12.28

+ Recent posts