nodejs 로 랭키닷컴의 도메인 리스트를 불러오는 코드를 작성하였습니다.
우선 랭키에 등록된 22개의 카테고리 데이터는 누구나 볼 수 있도록 개방되어 있습니다. 카테고리의 데이터를 불러와 페이지 갯수를 알아내어 페이지 수 만큼 데이터를 받아 파일에 기록합니다.
처음에 페이지 갯수를 몰라 카테고리별 웹페이지를 통째로 읽어 특정 구문을 찾아 페이지 수를 찾아내었는데 페이지 수를 정확하게 얻을 수 없었습니다. 그래서 코드를 좀 더 보다보니 페이지 수에 해당하는 값이 페이지 데이터에 포함되어 있더군요.
nodejs 의 반복문은 기존 절차적 코딩으로 생각하면 조금 복잡하게 느껴집니다. 이런 류의 반복문에 대한 코딩은 아래의 패턴으로 해결하고 있습니다.
repeater(i) {
if( i < length ) {
asyncwork( function(){
repeater( i + 1 )
})
}
}
repeater(0)
웹에 있는 데이터를 긁어오기 위해 restler 를 사용하였습니다. 웹에서 데이터를 불러오는 과정에서 가끔씩 오염된 데이터(json 이 아닌)가 오는 경우가 있었습니다.
이유는 너무 많은 호출 때문에 랭키 서버의 DB 서버에서 에러를 출력하는 경우였습니다.
그래서 웹 호출시 10초간의 여유를 두고 restler 를 사용하였습니다.
또한 파일로 내려받기 위해 파일을 생성하여 데이터를 받는대로 추가하는 과정이 있습니다. 사용하고 있는 nodejs 가 0.6 버전이라 0.8 에 생긴 파일 Append 함수를 사용할 수 없어서 구식 방법으로 코딩하였습니다.
깃헙에 코드를 올려두겠습니다.
https://gist.github.com/3741997
위 링크를 참고하세요
'Development > Coding' 카테고리의 다른 글
KCP 결제 모듈 적용기 (0) | 2012.10.11 |
---|---|
Jade 템플릿 사용시 IE 예외 처리 (0) | 2012.09.19 |
node.js 파일 작업 팁 (0) | 2012.09.18 |
DIV 안의 엘리먼트 세로 정렬 (0) | 2012.03.09 |
PHPFog with SlimPHP 테스팅 (0) | 2012.02.21 |