내일검색로고

검색
안녕하세요? 내일검색 웹마스터입니다.

내일검색은 OpenAPI를 통해 사이트의 기능 확장을 도와드리고 있습니다. OpenAPI를 사용할 수 있다면 자신의 사이트에 내일검색의 기능을 넣을 수 있습니다. 이 중에서 PHP 언어를 이용한 OpenAPI 중 채용검색 API를 보여드리려고 합니다. 채용검색 API를 하실 수 있다면 인기검색어 API는 그리 어렵지 않습니다.

OpenAPI를 사용하기 위해서는 다음과 같은 준비물이 필요합니다.
  • - PHP 4 혹은 PHP 5
  • - UTF-8(유니코드)가 지원되는 텍스트 에디터

내일검색의 검색결과는 유니코드로 출력이 되기 때문에, API의 사용도 유니코드로 해주셔야 글씨가 깨지지 않습니다. 메모장에서는 다음과 같이 저장하시면 됩니다(Windows XP 이상).

사용자 삽입 이미지

유니코드, 유니코드(Big Endian), ANSI, UTF-8 중에 UTF-8로 해주시면 됩니다. 다른 텍스트에디터에서도 UTF-8로 저장해주시면 됩니다. UTF-8이 지원되지 않는 텍스트에디터는 사용할 수 없습니다.

첨부파일을 보시면, 4개의 파일이 있는데 간단하게 그 역할을 소개하겠습니다.
  • - style.css : 스타일시트 파일입니다. 검색 결과 부분에서의 모양새를 결정할 수 있습니다.
  • - index.php : 검색 초기 화면입니다. 직접 사용하실 때에는 각 사이트별로 달라질 수 있습니다.
  • - search.php : 검색 결과를 출력하는 파일입니다. simplexml.php와 연결되어있으며, XML로 넘어오는 검색 결과를 적절하게 파싱해서 출력합니다.
  • - simplexml.php : 간단한 XML 파서입니다.
그렇다면 index.php 부터 살펴보겠습니다.



우선 meta 태그를 이용해서 문자셋을 UTF-8로 해줍니다. 웹 브라우저가 "이 문서는 UTF-8 형식이군" 이라고 알아차리기 위해서입니다. 보통 euc-kr도 많이 사용합니다만, 내일검색의 검색결과가 UTF-8로 나오기 때문에 UTF-8로 해주셔야 합니다(검색 질의에서 코드가 안맞으면 한국어로 검색이 되지 않습니다).

form 태그의 action이 search.php로 가있으니 이 질의는 search.php로 넘어갈 것입니다. method는 GET 방식인데, 검색엔진에서는 개인정보를 특별하게 노출 할 것이 없으므로 POST 방식을 사용하지 않았습니다. POST 방식을 사용하는 경우 search.php의 변수 부분 중 $_GET를 $_POST로 변경해 주셔야 합니다.

index.php는 매우 단순하니 이정도로 보고 넘어가서, 중요한 파일인 search.php를 살펴보도록 하겠습니다.

search.php는 크게 두 부분으로 나뉘어져 있습니다. 첫 번째 부분은 내일검색 OpenAPI 서버에 접속해서 검색질의어에 해당하는 검색 결과를 XML로 가져오는 부분이며, 두 번째 부분은 simplexml.php가 파싱한 구조화된 데이터를 적절하게 화면에 보여주는 부분입니다. 우선 내일검색 OpenAPI 서버에 접속하여 질의 결과를 가져오도록 하겠습니다.



index.php에 비해서 매우 길지만, 차근차근 살펴보겠습니다. 우선 가장 중요한 것은 $apikey 부분입니다. OpenAPI는 API 키를 받아서 사용하도록 되어있습니다. API Key의 발급은 이곳에서 하시면 됩니다.
동시에 보이는 검색결과수가 있는데, 한 화면에 몇 건의 채용 정보가 표시 될지를 정하는 부분입니다. 기본값은 10이며, 원하시는 대로 조절하실 수 있습니다. 그리고 $query를 잘 보시기 바랍니다.



apikey(API키)가 들어갔고, method는 search(키워드 검색이며 실시간 인기검색어와 자체 시험인 echo가 있습니다)가 들어갔습니다. q는 사용자가 넣은 키워드가 들어가며, start는 몇 번째 채용정보 부터 보여줄 것인지를 결정합니다. count는 앞서 설명드린 대로 한 화면에 보여질 채용정보의 수이며, out은 출력 방식입니다. 이 파일에서는 XML로 작업합니다(JSON 방식이 있습니다).

또한 이 파일은 REST 방식으로 데이터를 받아오는데, API 사이트와의 소켓 연결을 통해서 HTTP 데이터를 직접 받아옴을 뜻합니다. 그 이후 부분은 받아온 HTTP 데이터를 가공하여 simplexml이 읽을 수 있도록 만드는 과정이라고 보시면 됩니다. fclose 함수를 통해 소켓 연결을 종료하면서 첫 번째 부분은 끝이 납니다.

두 번째 부분을 설명하기 앞서, simplexml.php 부터 보도록 하겠습니다. 다음은 소스입니다.



simplexml은 검색결과를 화면에 출력할 수 있도록 구조화시켜주는 역할을 합니다. 일종의 문자인식기라고 보시면 되겠습니다.

검색결과 XML에는 일정한 순서와 패턴이 존재하기 때문에 이 패턴을 알면 많은 데이터를 틀리지 않게 분류해서 저장할 수 있습니다. 검색 결과는 매 건이 ITEM 태그로 시작해서 ITEM 태그로 끝납니다. 이것을 프로그램이 잡아내서 각 항목별로 자료를 넣어줍니다. 자세한 xml 파싱용 함수에 대해서는 php 관련 문서를 참조해주세요^^

case 문으로 채워진 부분은 내일검색 API 검색 결과에서 나오는 모든 항목을 정리해주는 부분입니다.

function display()는 차곡차곡 정리한 결과를 얻어올 때 사용합니다. 누가 얻어올까요? search.php가 다시 얻어옵니다. 이제 search.php의 두 번째 부분으로 넘어가겠습니다.



HTML과 PHP가 같이 있습니다. 검색 결과를 실제로 화면에 출력하기 때문에 그렇습니다. simplexml에서 정리한 데이터를 순서대로 출력해주는 부분입니다. 그리고 페이지 번호를 적절하게 보여주는 기능도 넣었습니다.

지금까지 PHP를 이용하여 내일검색 키워드 검색 API를 사용하는 방법을 알아보았습니다. 예제가 완벽하진 않지만 충분히 도움이 되었으리라 믿어 의심치 않습니다^^;; 참고 사이트와 첨부파일을 덧붙이면서 이 긴 글(?)을 마치겠습니다.

참고사이트


첨부파일

Trackback Address >> http://blog.naeil.incruit.com/trackback/70

댓글을 달아 주세요