RSS 피드를 파싱 해보자
rss-parser 라이브러리를 사용하겠다. 이유는 작고 가볍고 편하다.
그리고 주간 다운로드 수가 현재 17만을 육박한다.(등록일 기준)
www.npmjs.com/package/rss-parser
node v14.15.0 환경에서 실시
1. 설치
npm install --save rss-parser
2. 사용
샘플로 연합뉴스의 최신피드를 파싱할 예정, 최대한 샘플 코드를 따라해보았다.
(샘플주소: www.yonhapnewstv.co.kr/browse/feed/)
import RssParser from 'rss-parser'
async parseRss () {
const rssParser = new RssParser()
const feed = await rssParser.parseURL('https://www.yonhapnewstv.co.kr/browse/feed')
feed.items.forEach((item) => {
console.log(item.title + ':' + item.link)
})
}
코드를 보면 엄청 심플하면서 가벼움이 느껴지고 직관적이다.(직관적인 코드는 사랑해야 한다)
parseURL 메서드에 rss주소를 넘겨주면 끝 async/await 기반으로 작동한다.
3. 결과
깔끔하게 파싱되었다.
이제 좀더 들어가 내용도 파싱해보자, 근데 연합뉴스의 내용부분의 필드네임을 보면
content:encoded라고 되어있다, 해당부분은 CustomField로 처리하여 파싱할 수 있다.
4. Custom Field 처리
async parseRss () {
const rssParser = new RssParser({
item: [
['pageContent', 'content']
]
})
const feed = await rssParser.parseURL('https://www.yonhapnewstv.co.kr/browse/feed')
feed.items.forEach((item) => {
console.log(item.title + ':' + item.link)
console.log(item.content)
})
}
parseRss 메서드를 위와 같이 수정했다.
인스턴스 생성시 매개변수로 custom Field 정의를 넘길 수 있는데,
간단한 필드의 경우
item: ['content', 'date']
이름을 변경할 필드의 경우
item: [
['media', 'video'],
['abc', 'def']
]
위와 같이 배열안에 [From, To] 형식으로 넣어주면 해당 필드를 변경된 필드로 파싱할 수 있다.
5. 결과
'Node.js' 카테고리의 다른 글
Node.js - File system (0) | 2021.01.21 |
---|