개요
파이썬을 이용하여, RSS 피드를 가지고 오는 것을 해보기로 한다.
티스토리 블로그는 RSS 형식을 지원한다. RSS는 여러가지로 사용이 되는데, 해당 블로그의 주소 타이틀 등을 얻어 올 수 있는 매개체 역할을 한다.
해당 과정은 추후 파이썬 자동화 방문자수 늘리기에 기초 과정이 될 것이다.
RSS 란?
RSS: Rich Site Summary 또는 Really Simple Syndication. 舊 RDF Site Summary.
RSS는, 어떤 사이트에 새로운 콘텐츠가 올라왔을 때 해당 사이트에 방문하지 않고, RSS서비스를 통해 리더 한 곳에서 그 콘텐츠를 이용하기 위한 방법이다. 쉽게 생각하면, 여러 언론사 사이트를 모두 방문할 필요 없이 다양한 기사를 네이버뉴스 한 곳에서 볼 수 있는 것과 같다고 보면 된다.
쉽게 얘기 하면 해당 사이트에 방문하지 않고, 손 쉽게 볼 수 있는 역할을 할 수 있는 것 이라고 보면 된다.
내 블로그를 구독하는 사람인데, 실시간으로 내 블로그의 최신 포스팅을 알림을 받고 싶거나, 여러개의 블로그를 RSS를 해놓고 최신 글 중 내가 원하는 것을 쉽게 모아 보기 위해서 사용한다.
파이썬 FeedParser
RSS 형식을 원하는 형식으로 parsing 하기 위해서는 파이썬에서 FeedParser 라는 라이브러리를 설치 및 import 해주어야 한다.
아래와 같이 pip install 을 이용하여 손쉽게 설치가 가능하다.
$ pip install feedparser
$ pip install feedparser
Collecting feedparser
Downloading feedparser-6.0.2-py3-none-any.whl (80 kB)
|████████████████████████████████| 80 kB 993 kB/s
Collecting sgmllib3k
Downloading sgmllib3k-1.0.0.tar.gz (5.8 kB)
Using legacy 'setup.py install' for sgmllib3k, since package 'wheel' is not installed.
Installing collected packages: sgmllib3k, feedparser
Running setup.py install for sgmllib3k ... done
Successfully installed feedparser-6.0.2 sgmllib3k-1.0.0
WARNING: You are using pip version 20.2.2; however, version 21.0.1 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.8/bin/python3 -m pip install --upgrade pip' command.
SSL 에러
인터넷 웹 환경에 따라, 아래와 같은 에러가 발생하게 되면, SSL 에러를 핸들링 한다.
[SSL: CERTIFICATE_VERIFY_FAILED] 에러는 Python이 stdlib http 클라이언트에 대해 기본적으로 인증서 검증을 적용하기 시작했기 때문에, 발생한다. 아래 패치를 이용하여, 인증서 검증을 하지 않도록 예외 처리를 하면 된다.
url = "https://coinpipe.tistory.com/rss"
feed = feedparser.parse(url)
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1123)
During handling of the above exception, another exception occurred:
현재 Feedparser 사용자는 monkey patch 를 통해서만 인증서 검증을 피할 수 있다.
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
코드 작성
내 블로그를 구독하는 사람인데, 실시간으로 내 블로그의 최신 포스팅을 알림을 받고 싶거나, 여러개의 블로그를 RSS를 해놓고 최신 글 중 내가 원하는 것을 쉽게 모아 보기 위해서 사용한다.
import feedparser
import ssl
if hasattr (ssl, '_create_unverified_context') :
ssl._create_default_https_context = ssl._create_unverified_context
url = "https://coinpipe.tistory.com/rss"
feed = feedparser.parse(url)
for idx, entry in enumerate(feed.entries) :
url = entry['id']
value = entry['title_detail']['value']
print ( url + " " + value )
feeparser 와 ssl 을 import 해주고, 위에서 언급한 ssl 관련 에러를 핸들링 하기 위해서 ssl 인증을 회피학 위한 문구를 추가한다.
rss 클리핑하기 위한 주소를 입력하고, feedparser에 그 url 을 전달하여, feed 리스트를 얻어온다.
feed 리스트에서 반복문을 돌면서, url 과 title 값을 얻어온다.
결과
최신글인 99번 부터 순서대로 글의 URL 과 타이틀이 정상적으로 출력된다.
https://coinpipe.tistory.com/99 블로그 썸네일 이쁘게 만들기
https://coinpipe.tistory.com/98 OpenGrok Crontab 으로 주기적으로 indexing 하기
https://coinpipe.tistory.com/97 Opengrok 설치 하기
https://coinpipe.tistory.com/96 Repo Init 에러 해결 하기
https://coinpipe.tistory.com/95 네이버 웨일 광고 삭제
https://coinpipe.tistory.com/94 Signature from server's host key is invalid error
https://coinpipe.tistory.com/93 QT 첫 시작 Hello World 출력하기
https://coinpipe.tistory.com/92 파이썬 인스타그램 좋아요 봇 만들기 #15 자동 팔로우 하기
https://coinpipe.tistory.com/91 우분투 18.04 환경에서 QT 설치
https://coinpipe.tistory.com/89 애자일 (Agile) 개발 방법론
맺으며
티스토리 블로그를 RSS 형식의 Parsing 하여, 최신 게시물의 url 를 얻어오자.
'IT > Python' 카테고리의 다른 글
파이썬 크롤링 - 크롬화면 띄우지 않기 (10) | 2021.10.04 |
---|---|
파이썬 1줄 코드 중간에 주석 달기 (2) | 2021.08.22 |
파이썬 vscode 설치 및 환경설정하기 (0) | 2020.08.24 |
파이썬 어떤 에디터를 써야 하나? (0) | 2020.07.31 |
파이썬 - 시작하기 (2) | 2020.07.09 |
댓글