이번에 토이 프로젝트로 제가 관심있는 블로그들의 RSS 피드를 기반으로 Slack으로 메신저를 보내주는 간단한 프로그램을 만들어보려고 합니다. 오랜만에 RSS를 사용하려니 리마인드 겸 RSS가 무엇인지와 구조에 대해 정리하고 시작하고자 이 글을 작성합니다.
RSS란?
RSS란 Really Simple Syndication의 약자로 웹 콘텐츠 표현 방식이자 통신 포맷입니다. XML 1.0 version에 정의된 데이터를 공유하기 위한 포맷입니다. RSS는 웹 사이트에서 제공하는 정보나 뉴스를 컴퓨터가 처리할 수 있는 형식으로 가져올 수 있습니다.
RSS는 어떻게 동작하는가?
뉴스기사나 블로그 글을 배포하기 위한 RSS 시스템은 매우 단순합니다. 본인의 글이나 기사들이 다른 웹사이트에서 표시되기를 원하는 웹 페이지들이 있을 것입니다. 이러한 페이지들의 집합을 RSS 피드라고 합니다. RSS 피드를 정의하는 파일은 XML파일형태이며 이 파일 내에는 URL, title, 그리고 각 페이지에서 보여주고자하는 내용들이 포함되어 있습니다. 자신의 컴퓨터에서 RSS 피드를 읽기 원하는 사람은 그 RSS 피드를 추가하고 RSS Reader 또는 브라우저를 사용하여 볼 수 있습니다. 콘텐츠 제공자(다른 웹사이트에서 페이지 정보를 보이길 원하는)로부터 RSS 파일을 로드하고 페이지의 URL을 추출하고 Title과 Summary를 표시합니다. 누군가가 해당 웹페이지에 방문하면 콘텐츠 제공자의 웹사이트에서 RSS 파일을 불러와 데이터를 표시해줍니다.
RSS는 XML파일이며 제공받을 파일을 분석하여 표시해주는 것이라고 간단히 생각하면 될 것 같습니다.
RSS의 구조는?
RSS는 XML 파일입니다. RSS 내에는 최소 하나 이상의 Channel을 가지고 있어야 합니다. 채널은 이 RSS파일을 제공하는 웹사이트의 정보가 포함되어 있습니다.
제 블로그의 RSS를 이용해서 분석해 보겠습니다. 주소는 아래와 같습니다.
https://sonseungha.tistory.com/rss
처음 들어가면 펼쳐져 있지만, 모두 접은 상태에서부터 시작해보겠습니다.
가장 먼저 rss version이 보이고 channel이 보입니다. rss는 global container이며 channel은 배포하는 채널의 정보가 담겨있습니다. 내부에는 또 많은 항목들이 포함되어 있습니다.
1
2
3
|
<rss version="2.0">
<channel>...</channel>
</rss>
|
cs |
channel 내부를 확인해 보시죠. channel 내부에는 title, link, description, language, pubDate, generator, managingEditor, image와 여러가지 item 들이 포함되어 있는걸 볼 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<rss version="2.0">
<channel>
<title>Developer's Delight</title>
<link>http://sonseungha.tistory.com/</link>
<description>
Linux System Programmer. Tizen Framework Programmer. linuxias@gmail.com https://github.com/linuxias/ https://linuxias.gitbooks.io/ https://www.linkedin.com/in/seungha-son-a97a02b3/
</description>
<language>ko</language>
<pubDate>Wed, 14 Nov 2018 22:06:38 +0900</pubDate>
<generator>TISTORY</generator>
<managingEditor>Linuxias</managingEditor>
<image>
<title>Developer's Delight</title>
<url>
https://tistory4.daumcdn.net/tistory/1135772/attach/789073b7b20d4abbac3d4ee7d94fb25e
</url>
<link>http://sonseungha.tistory.com</link>
<description>
Linux System Programmer. Tizen Framework Programmer. linuxias@gmail.com https://github.com/linuxias/ https://linuxias.gitbooks.io/ https://www.linkedin.com/in/seungha-son-a97a02b3/
</description>
</image>
<item>...</item>
<item>...</item>
<item>...</item>
</channel>
</rss>
|
cs |
하나씩 정리해보겠습니다.
title : channel의 타이틀입니다. 'Developer's Delight'는 제 블로그의 제목입니다.
link : 이 채널을 제공하는 웹사이트의 URL입니다. 제 블로그 주소네요.
description : 웹사이트의 간략한 정보들입니다.
language : 별도로 설명이 필요없겠죠?
pubDate : 배포 일자입니다.
image : 웹사이트에서 사용하는 이미지 정보가 포함되어 있습니다. 지금은 스킨으로 인해 가려져있지만, 기본적으로 제 사진을 추가해 놓았습니다.
item : 컨텐츠에 대한 태그입니다. channel에 하나 이상의 item이 포함되어 있습니다.
원하는 컨테츠를 정보는 item 태그 내에 존재하는 것 같습니다. 하나만 펼쳐서 확인해 보겠습니다.
라인 14~36을 보시면 제일 첫번째 item 내용을 볼 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<rss version="2.0">
<channel>
<title>Developer's Delight</title>
<link>http://sonseungha.tistory.com/</link>
<description>
Linux System Programmer. Tizen Framework Programmer. linuxias@gmail.com https://github.com/linuxias/ https://linuxias.gitbooks.io/ https://www.linkedin.com/in/seungha-son-a97a02b3/
</description>
<language>ko</language>
<pubDate>Wed, 14 Nov 2018 22:06:38 +0900</pubDate>
<generator>TISTORY</generator>
<managingEditor>Linuxias</managingEditor>
<image>
</image>
<item>
<title>NUMA BALANCING</title>
<link>http://sonseungha.tistory.com/488</link>
<description>...</description>
<category>Kernel Analysis</category>
<category>Balancing</category>
<category>Fault statistics</category>
<category>Linux</category>
<category>Linux Kernel</category>
<category>memory</category>
<category>NUMA</category>
<category>NUMA balancing</category>
<category>NUMA hinting page faults</category>
<category>NUMA page migraion</category>
<category>Pseudo-interleaving</category>
<category>Task grouping</category>
<category>Task placement</category>
<category>누마</category>
<author>Developer's Delight Linuxias</author>
<guid>http://sonseungha.tistory.com/488</guid>
<comments>http://sonseungha.tistory.com/488#entry488comment</comments>
<pubDate>Sat, 10 Nov 2018 16:20:44 +0900</pubDate>
</item>
<item>...</item>
<item>...</item>
</channel>
</rss>
|
cs |
title, link는 위에서 channel 바로 아래 존재하는 태그정보와 일치합니다. category는 티스토리에서 태그 붙이기 위해 작성한 커멘트들이네요. 그럼 실제 제가 블로그에 작성한 내용은 description에 존재할 것 같습니다. 펼친 정보를 보여드리고 싶지만, 너무 방대해서... 직접 들어가서 보시는게 더 좋을 것 같습니다.
RSS에 대한 정리는 여기까지 하겠습니다. 자세한 내용은 검색하시면 더 많이 나오니 참고바랍니다.
감사합니다.
'ETC' 카테고리의 다른 글
Github Action #2 - 예제 분석하기 (0) | 2022.01.30 |
---|---|
Github Action #1 - 기본 용어 정리 (0) | 2022.01.30 |
개발자가 즐길 수 있는 영상 리스트 (0) | 2022.01.15 |
인공지능과 컴퓨터 그래픽스의 조합 (0) | 2018.06.01 |
3D 프린팅 기술의 미래에 대해.. (1) | 2018.04.15 |