以下に、PythonでRSSフィードを取得し、各エントリーをリストアップするCGIスクリプトを示します。feedparser を使用してRSSを解析し、HTMLとして出力します。
feedparser が必要なので、インストールされていない場合は以下のコマンドでインストールしてください。
pip install feedparser
rss_reader.py)#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cgi
import cgitb
import feedparser
# デバッグ用
cgitb.enable()
# RSSフィードのURL
RSS_URL = "<https://example.com/rss.xml>" # 任意のRSSフィードURLに変更してください
def fetch_rss_entries(url):
"""指定したURLのRSSフィードを取得し、エントリーをリストアップ"""
feed = feedparser.parse(url)
return feed.entries
def print_html(entries):
"""RSSエントリーをHTMLで出力"""
print("Content-Type: text/html; charset=utf-8\\n")
print("<html><head><title>RSS Reader</title></head><body>")
print("<h1>RSS Feed</h1>")
print("<ul>")
for entry in entries:
print(f'<li><a href="{entry.link}" target="_blank">{entry.title}</a></li>')
print("</ul>")
print("</body></html>")
# RSSフィードを取得
entries = fetch_rss_entries(RSS_URL)
# HTMLとして出力
print_html(entries)
rss_reader.py を CGIディレクトリ(例: /var/www/cgi-bin/)に配置します。
実行権限を付与します。
chmod +x /var/www/cgi-bin/rss_reader.py
Webサーバー(Apache など)で CGI を有効化し、スクリプトのURLにアクセスします。
<http://your-server.com/cgi-bin/rss_reader.py>
feedparser.parse(RSS_URL) でRSSデータを取得。title と link を取得し、HTMLリストで表示。cgi と cgitb を使用し、CGI環境でエラーハンドリング。このスクリプトを設置すれば、指定したRSSフィードの最新エントリーがリストとして表示されます!
Error in sys.excepthook: Traceback (most recent call last): File "C:\Users\takam\AppData\Local\Programs\Python\Python312\Lib\cgitb.py", line 281, in call self.handle((etype, evalue, etb)) File "C:\Users\takam\AppData\Local\Programs\Python\Python312\Lib\cgitb.py", line 301, in handle self.file.write(doc + '\n') UnicodeEncodeError: 'cp932' codec can't encode character '\u2013' in position 1841: illegal multibyte sequence Original exception was: Traceback (most recent call last): File "C:\Users\takam\Documents\server\html\blog2md.py", line 31, in print_html(entries) File "C:\Users\takam\Documents\server\html\blog2md.py", line 23, in print_html print(f'