Feedparser:entry.title 不一致

Feedparser: entry.title inconsistency

我正在尝试使用 feedparser 解析 RSS 提要。

我得到这样的标题:

import feedparser
url = 'http://chem.aalto.fi/en/current/events/rss.xml'
feed = feedparser.parse(url)
for entry in feed.entries:
    title = entry.title
    print title

通常这没有问题,但我遇到了一个奇怪的情况。在此特定提要中,标题如下所示:

<title>06.11.2015: Some title text</title>

不出所料,我有时会得到:

06.11.2015: Some title text

...但有时对于同一项目也是如此:

11/06/15: Some title text

有没有人遇到过类似的问题?好像完全是随机的。

这似乎是服务器端的错误。我以前没有看过提要,但在使用提要时我设法以明显随机的方式看到了两种日期格式。

如果您的目标是获得一致的事件日期和标题,您可以在该提要中使用额外的 xcal 元数据。例如,通过使用 dateutil:

import feedparser
import dateutil.parser
url = 'http://chem.aalto.fi/en/current/events/rss.xml'
feed = feedparser.parse(url)
for entry in feed.entries:
    title = entry.title.split(": ", 1)[1]
    start_time = dateutil.parser.parse(entry.xcal_dtstart)
    end_time = dateutil.parser.parse(entry.xcal_dtend)
    print("{} - {}: {}".format(start_time.date(), end_time.date(), title))

编辑:此外,就其价值而言,当使用 http://chem.aalto.fi/en/current/events/rss.xml?format=rss and in the 15.06.2016 format when using http://chem.aalto.fi/en/current/events/rss.xml?format=atom 请求时,RSS 提要似乎始终以 06/15/16 格式输出标题。

用于生成提要的代码(基于提要顶部的 generator="FeedCreator 1.7.6(BH)")可以在 https://github.com/ajslater/feedcreator/blob/master/include/feedcreator.class.php

中看到

基于此,我的猜测是 Feedcreator 库对生成条目标题的主要代码有一些意想不到的副作用,并且该副作用似乎因所使用的提要格式而异。如果提要格式未在 URL 中明确设置,则它可能(错误地)使用格式或整个提要内容的某些缓存版本。无论如何,在 URL 中明确设置格式很可能会为您解决此问题。