【发布时间】: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 下运行的盒子上看到不同的结果)
标签: python django rss django-templates feedparser