DEV Community

drake
drake

Posted on

python订阅解析rss

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import feedparser
import requests

def read_rss(rss_url):
    """
    简单的RSS阅读函数
    """
    try:
        # 设置请求头
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }

        # 获取RSS内容
        response = requests.get(rss_url, headers=headers, timeout=30)
        response.raise_for_status()

        # 解析RSS
        feed = feedparser.parse(response.content)

        # 打印RSS信息
        print(f"RSS标题: {feed.feed.get('title', '未知')}")
        print(f"RSS描述: {feed.feed.get('description', '无描述')}")
        print(f"文章数量: {len(feed.entries)}")
        print("="*50)

        # 显示最新的5篇文章
        for i, entry in enumerate(feed.entries[:5], 1):
            print(f"{i}. {entry.get('title', '无标题')}")
            print(f"   链接: {entry.get('link', '无链接')}")
            print(f"   时间: {entry.get('published', '未知时间')}")

            # 显示摘要(如果有的话)
            summary = entry.get('summary', '')
            if summary:
                # 限制摘要长度
                if len(summary) > 100:
                    summary = summary[:100] + "..."
                print(f"   摘要: {summary}")

            print("-" * 30)

        return feed

    except requests.exceptions.RequestException as e:
        print(f"网络请求失败: {e}")
        return None
    except Exception as e:
        print(f"解析RSS失败: {e}")
        return None

# 使用示例
if __name__ == "__main__":
    rss_url = "https://rss-public.bwe-ws.com/"

    print("正在获取RSS内容...")
    feed = read_rss(rss_url)

    if feed:
        print("\nRSS获取成功!")
    else:
        print("\nRSS获取失败!")
Enter fullscreen mode Exit fullscreen mode

Top comments (0)