You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析CNN RSS源时仅获取前7条条目后触发无published属性的AttributeError

问题根因

该异常并非feedparser的解析逻辑故障,本质是CNN提供的RSS源字段一致性缺失:源XML中前7条结构化供稿条目自带published发布时间字段,feedparser会将该字段映射到对应条目对象的属性上;从第8条开始的聚合类、转载类条目,源端未写入任何发布时间相关字段,feedparser不会为不存在的源字段自动挂载对应对象属性,直接硬访问news.published就会触发AttributeError。

解决方法
  • 对条目属性做兼容式访问,禁止硬依赖固定字段
    feedparser返回的条目对象是类字典结构,支持.get()方法读取属性并设置默认兜底值,改写后的代码可兼容所有异常场景,不会抛出访问错误:
    import feedparser
    
    url = "http://rss.cnn.com/rss/edition.rss"
    feed = feedparser.parse(url)
    for news_idx, news_item in enumerate(feed.entries, start=1):
        # 依次匹配不同命名规则的时间字段,无有效内容时输出兜底提示
        publish_time = (
            news_item.get("published")
            or news_item.get("updated")
            or news_item.get("pubDate")
            or "该条目未标注发布时间"
        )
        print(f"第{news_idx}条:{publish_time}")
    
  • 升级feedparser到最新稳定版本
    部分旧版本feedparser存在RSS2.0规范的字段映射缺陷,会导致部分源端存在的字段无法被正常识别,执行升级命令即可解决对应识别问题:
    pip install --upgrade feedparser
额外注意事项

CNN当前输出的RSS源没有统一的供稿字段校验规则,不同板块的供稿系统输出的XML结构差异较大,遍历所有RSS条目时,所有属性访问都需要做空值兜底逻辑,不可假设所有条目都包含完全一致的字段集合。


内容的提问来源于stack exchange,提问作者Hoangtho1997

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 17:45:04