반응형
크롤러를 만들기위해 필요로하는 페이지를 가지고 오기위해 request-promise를 사용하였다.
요새 대부분의 홈페이지는 utf-8을 사용하기 때문에 큰 문제가 없으나 euc-kr를 사용하는 옛날 사이트들이 있다.
그런 사이트들의 정보를 그냥 request해서 가지고 오게되면 한글이 다 깨져버린다. 그것을 해결해보자.
우선 request-promise를 사용하여 데이터를 가지고 와보자.
1 2 3 4 5 6 7 8 | const request = require('request-promise'); class Crawler { async crawler() { let doc = await reqest('http://url'); } } | cs |
역시 euc-kr를 사용하는 것을 확인하고 있고 깨져있다.
문자열의 인코딩, 디코딩을 제공해주는 라이브러리 iconv-lite 라이브러리를 다운 받는다.
1 | npm install iconv-lite --save | cs |
그리고 다음과 euc-kr로 인코딩 되어있는 문장을 euc-kr로 디코딩해주면 된다.
※주의※
만약 request-promise로 데이터를 데이터를 가지고 오는것이라면 encoding: null 속성을 null로 해주어야 정상적으로 디코딩이 되니 꼭 참고해야한다.
1 | let doc = iconv.decode(new Buffer(await request({url: 'http://', encoding: null})), 'EUC-KR').toString(); | cs |
decoding이 된 문자열
반응형
'web > node.js' 카테고리의 다른 글
swagger api 보안 oauth2 설명 (0) | 2018.10.06 |
---|---|
node.js 애플리케이션 프로세스 관리 도구 매니저 (2) | 2018.10.06 |
node.js로 구글 스프레드시트에 접속하여 데이터 가져오기 (0) | 2018.10.05 |
router 경로 enumset 처럼 받는 방법과 테스트 사이트 (0) | 2018.10.05 |
node.js에 swagger 적용 (4) | 2018.10.05 |