Web 프로그램/JSON, 파싱 다루기

[PHP Parsing] Snoopy로 로또번호 추출하기

Link2Me 2016. 8. 1. 22:57
728x90
PHP 로 파싱하는 것은 아직 안해봤다. PHP 로 파싱하는 걸 알면 여러모로 편리할 거 같기는 하다.

다른 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 정규식을 사용해서 이제 본문 필요 요소만을 추출



728x90