[PHP Parsing] Snoopy로 로또번호 추출하기
다른 Web 사이트에 있는 정보를 가져와서 재가공 해야 하는 경우에 Snoopy.class.php 를 활용하면 된다.
Snoopy 클래스 다운로드 http://sourceforge.net/projects/snoopy/files/latest/download
네이버지식인 답변에 올라온 것을 적어둔다.
답변자 출처 : http://dolgo.net/php/questions/85
<?php
include_once 'snoopy/Snoopy.class.php';
$snoopy = new Snoopy;
$getUrl = "http://www.645lotto.net/lotto645Confirm.do?method=byWin&drwNo=710";
$snoopy->fetch($getUrl);
$pattern='/img src="\/img\/common\/ball_(.*?).png/';
preg_match_all($pattern,$snoopy->results,$out);
for($i=0;$i<=6;$i++){
echo $out[1][$i]."\n";
}
?>
분석
- $snoopy = new Snoopy; // Class화된 PHP는 객체 생성을 해야 함
- 확장자를 do를 사용하는 것은 PHP 인지 JSP 인지 식별할 수 없게 하기 위함이다.
- 로또번호 회차 표시부분을 수정하면 매번 다르게 보일 것이다.
- fetch($getUrl) : 입력받은 주소의 html소스를 텍스트 형식으로 $results에 저장
- fetchlinks($URI) : fetch와 비슷하지만 링크만을 배열의 형태로 $results에 저장
- fetchtext($URI) : fetch와 비슷하지만 스크립트를 제외한 텍스트만 $results에 저장
- fetchform($URI) : fetch와 비슷하지만 폼 부분을 html형식으로 $results에 저장
- submit($URI, $formvars="", $formfiles="") : 폼에 여러 변수를 붙여서 전송 가능
- setcookies() : 종종 쿠키정보를 유지해야하는 경우가 있을 때 사용
- preg_match 정규식을 사용해서 이제 본문 필요 요소만을 추출