파싱 의뢰맡기려고했는데 아무도 연락이 없어서 그냥 제가 직접 만드려고

몇가지 알아보니 php는 대표적으로 2개를 위주로 사용을 많이 하는것 같더군요.

 

* simple html dom parser

* snoopy

 

simple html dom parser가 선택자 기능도 있고.. 개인적으로 jquery를 좋아해서 사용하기 좋겠다 싶었는데

웬걸... 제대로 작동이 안되네요.... 그래서 snoopy를 이용해서 테스트해보니 잘 작동합니다.

 

아쉬운점이라면 html 내용을 통채로 가져오다보니 정규식에 능숙해야 한다는점.. (간만에 다시 공부해야겠네요)

그래도 환율 정보라든지 간단한 정보를 가져오기에 좋은것 같아요. 

 

 

// 내용추가 //

 

사례만 이야기하면 좀 그런것 같아 

간단한 사용법도 첨부합니다. ㅎ

 

우선 snoopy 최신버전 다운로드 먼저합니다. (http://sourceforge.net/projects/snoopy/files/latest/download)

그리고 위젯에 넣고 아래와 같은형태로 사용하면 끝.

 

//인클루드
include_once 'Snoopy.class.php';

//스누피 시작
$snoopy = new snoopy;

//파싱
$url = "http://xetown.com";
$snoopy->fetch($url);

//파싱값 인코딩변경 (안하면 한글 깨짐)
$snoopy->results = iconv("euc-kr","UTF-8",$snoopy->results);

//필요한부분 정규식으로 추출
$pattern='@<span>(.+)</span>@'; 
preg_match_all($pattern,$snoopy->results,$output);  

//정보세팅
Context::set('output',$output);

 

 

세팅된 정보를 템플릿파일에서 사용하면 됩니다~

 

  • profile
    축하해요~~~
    파싱 만들어 놓은게 있었는데 의뢰가 있었는지도 몰랐네요 ㅠㅠ
  • profile
    보통 파싱은 모듈단에서 만드는데 파싱 위젯인 거군요. ㅎ
  • profile ?
    게시판 파싱같은게 아니라 간단한 정보를 파싱하는거라 위젯으로 하는게 사용하기도 쉽고 좋아요 ㅎㅎ
  • profile
    음.... 스누피와 돔 파서는 함께 활용했을 때 더욱 좋습니다.
    스누피로 html 가져오고 돔 파서로 html string을 로드하면 돼요!
  • profile ?
    오호 좀 복잡해지면 돔파서도 연동해야겠군요 ㅎ 조언감사합니다
  • ? profile
    저는 항상 돔 파서를 쓰는데, 장단점이 있습니다. 정규식은 빠르게 가져올 수 있고, 돔 파서는 편리하고 약간 리스폰시브한 파싱이 가능하지만
    만약 돔이 깨진 경우 (HTML 마크업이 잘못된 경우) 돔 파서는 먹통이 되어버립니다. 속도도 정규식에 비해 상대적으로 느리구요.

    (사실 저는 node에서 cheerio.js를 제일 좋아해요.)
  • profile profile
    돔 파서에 넣기 전에 htmlpurifier 같은 XSS 필터링 라이브러리를 한번 거쳐주는 방법도 있습니다. 필터링 기능뿐 아니라 깨진 돔을 고쳐주는 역할도 하거든요. 물론 너무 심하게 깨졌다면 이것도 안되지만...
  • profile profile
    오오오오 꿀팁 감사합니다.
  • profile
    오오, 공개된다면..(흐뭇)
  • profile ?
    위에 내용이 전부라는... 저걸로 금융정보 가져오는 위젯 만들었습니다..ㅎㅎ;;
  • ?
    오오오!! 무슨말인지 하나도 모르겠지만 멋있습니다; =ㅅ=b