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를 이용해서 나눔로또 페이지를 긁어보자.
- 먼저 snoopy 클래스를 만든다
- 나눔로또 당첨번호 안내 페이지 주소를 긁어온다.
$kai 는 회차를 나타낸다. - 번호부분의 패턴을 분석해서 번호만 빼온다.
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]));
}
여기서 $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 |