Pythonで定数RSS_URLに指定したURLのRSSファイルを読み込み、その各エントリーをリストアップするCGIを作成してください。

以下に、PythonでRSSフィードを取得し、各エントリーをリストアップするCGIスクリプトを示します。feedparser を使用してRSSを解析し、HTMLとして出力します。

必要なライブラリ

feedparser が必要なので、インストールされていない場合は以下のコマンドでインストールしてください。

pip install feedparser


CGIスクリプト (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)


設置方法

  1. rss_reader.py を CGIディレクトリ(例: /var/www/cgi-bin/)に配置します。

  2. 実行権限を付与します。

    chmod +x /var/www/cgi-bin/rss_reader.py
    
    
  3. Webサーバー(Apache など)で CGI を有効化し、スクリプトのURLにアクセスします。

    <http://your-server.com/cgi-bin/rss_reader.py>
    
    

説明

このスクリプトを設置すれば、指定した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'