【问题标题】:Feedparser gives SAXParseException on 'valid' RSSFeedparser 在“有效”RSS 上给出 SAXParseException
【发布时间】:2023-03-13 04:28:01
【问题描述】:

我正在尝试使用我在这个 sn-p 中找到的方便的包含标签在我的基于 django 的网站上显示来自外部 rss 提要的内容:djangosn-ps.org/sn-ps/311/

但是,feedparser 对有问题的 rss 提要 (http://softplc.com/blog/blogs/xmlsrv/rss2.php?blog=2) 感到窒息,该提要在在线 rss 查看器 (www.seekfreak.com/rss/) 中工作得很好,而且被宣布为“有效” feedvalidator.org

收到的错误是:SAXParseException('开始和结束标记不匹配:元行 7 和头部\n',)

...这是有道理的,除了来自该提要的 XML 中没有元标记。看起来 feedparser 正在尝试从 softplc.com/blog/blogs/ 中读取 html,而不是完整的 rss 链接之类的? (即使那样我也没有看到引用的标签不匹配)

那么,feedparser 提供了什么?

【问题讨论】:

  • 直接尝试同样的事情——len(feedparser.parse('http://softplc.com/blog/blogs/xmlsrv/rss2.php?blog=2')) 给出 9,并且没有错误。你有错误的 URL 或任何类型的 HTTP 代理吗?
  • 三重检查 URL。没有代理。 parse 返回的东西上有一个“len”,但据我所知,这是一大堆垃圾。在一堆 goo 的最后是关于 bozo_exception 的一点点。无法从返回值中访问类似 ['entries'] 的东西,len(feed['entries']) 是 0(显然)。
  • len(f['entries']) == 10,使用FeedParser 5.1.3。
  • 好的,在一个单独的环境中完成了,得到了你所得到的。我可以清除某种结果缓存吗?奇怪的是我会看到相同的?缓存?结果在 Django 下运行(包含标记代码中的 pdb 断点)以及在 python 控制台中直接运行 feedparser。 (然后在另一个没有在 Django 下运行的盒子上看到不同的结果)
  • 澄清:dpaste.de/CLdaf

标签: python django rss django-templates feedparser


【解决方案1】:

用 wget 做了一些检查,你知道,但我试图从错误的服务器获取内容。长话短说,有一个 /etc/hosts 条目将相关域映射到“不工作”框的外部 IP - 删除它,一切都很好。

Excuse: 有问题的盒子正在作为现有网站的替代品,所以它最终将成为正确的域(只是还没有)。

@Joe - 感谢您的完整性检查,看到它在其他地方工作导致修复!

对(不)明智的人说:检查你的网络资料!

Feedparser,对不起,我怀疑了你!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2013-04-02
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多