当前位置: 首页 > news >正文

【实用工具】使用Python语言制作RSS阅读器

【实用工具】使用Python语言制作RSS阅读器,代码如下:

import xml.etree.ElementTree as ET
import urllib.request
from html import unescape
import sysdef fetch_rss(url):"""从指定 URL 获取 RSS 内容(XML 字符串)"""try:with urllib.request.urlopen(url, timeout=10) as response:return response.read()except Exception as e:print(f"❌ 无法获取 RSS 源: {e}")sys.exit(1)def parse_rss(xml_data):"""解析 RSS XML 数据,返回文章列表"""try:root = ET.fromstring(xml_data)except ET.ParseError as e:print(f"❌ XML 解析失败: {e}")sys.exit(1)channel = root.find('channel')if channel is None:print("❌ 未找到 <channel> 节点")sys.exit(1)title = channel.find('title')blog_title = unescape(title.text.strip()) if title is not None and title.text else "未知博客"items = []for item in channel.findall('item'):title_elem = item.find('title')link_elem = item.find('link')pub_date = item.find('pubDate')description = item.find('description')title_text = unescape(title_elem.text.strip()) if title_elem is not None and title_elem.text else "无标题"link_text = (link_elem.text.strip() if link_elem is not None and link_elem.text else "") or "无链接"pub_date_text = pub_date.text.strip() if pub_date is not None and pub_date.text else "未知时间"desc_text = unescape(description.text.strip()) if description is not None and description.text else ""# 清理描述中的多余空白和 CDATA 标记残留(虽然 ElementTree 已自动处理 CDATA)desc_text = ' '.join(desc_text.split())[:100] + ('...' if len(desc_text) > 100 else '')items.append({'title': title_text,'link': link_text,'pubDate': pub_date_text,'description': desc_text})return blog_title, itemsdef display_articles(blog_title, articles):"""在终端中格式化输出文章列表"""print(f"\n📰 博客名称: {blog_title}")print("=" * 80)for i, art in enumerate(articles, 1):print(f"\n[{i}] {art['title']}")print(f"🕒 发布时间: {art['pubDate']}")print(f"🔗 链接: {art['link']}")if art['description']:print(f"📝 摘要: {art['description']}")print("\n" + "=" * 80)print(f"共 {len(articles)} 篇文章")def main():# CSDN 示例 RSS 地址(请替换为你自己的)rss_url = "RSS_Address"print("🔍 正在获取 RSS 数据...")xml_data = fetch_rss(rss_url)print("✅ RSS 数据获取成功!")blog_title, articles = parse_rss(xml_data)display_articles(blog_title, articles)if __name__ == "__main__":main()
http://www.dtcms.com/a/465536.html

相关文章:

  • 动态规划 - 二维费用的背包问题、似包非包、卡特兰数
  • JAVA·方法的使用
  • 做rap的网站国内做网站网站风险大吗
  • 【代码随想录算法训练营——Day33】动态规划——62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树
  • 基于单片机的元胞自动机仿真系统设计
  • 星座运势网站技术解析:从零打造现代化Web应用
  • Asp.net core 跨域配置
  • Java学习之旅第二季-18:转型
  • 建筑物孪生模型:重构空间数字化格局,赋能智慧城市
  • Claude code、codex、gemini cli开启全自动(yolo)模式,无需审批
  • wordpress账号和站内网建网站需要注册公司吗
  • 24软件测试计划主要工作和确定测试资源
  • 【每天一个知识点】[特殊字符] 大数据的定义及单位
  • ICT 数字测试原理 17 - -VCL中的预处理
  • 领码方案|微服务与SOA的世纪对话(7):运营降本增效——智能架构时代的成本与服务管理
  • YOLO v1:目标检测领域的单阶段革命之作
  • 河北建设厅八大员报名网站中国网库网站介绍
  • 基于RuoYi框架+Mysql的汽车进销存后台管理系统
  • 网站底部导航制作制作视频特效
  • 南宁网站建设索王道下拉建设网站的法律声明
  • Java中Mock的写法
  • 在JavaScript / HTML中,调整div的边框
  • 关于margin:auto的注意点
  • 23种设计模式——责任链模式(Chain of Responsibility Pattern)
  • istio 为什么在主机上抓不到15001和15006的流量
  • 怎么建设电子邮箱网站wordpress国外空间
  • 网站内容页怎么设计模板网络建设与维护公司
  • 网页版的点名/抽奖程序
  • 学做课件的网站商丘seo快速排名
  • 海康相机拍照与上传图像识别系统