限制和处理YQL RSS feednormalizer中的错误

时间:2011-06-13 10:30:13

标签: rss yql

我正在使用YQL一次检索多个RSS提要(频道),使用以下查询:

SELECT * FROM feednormalizer
WHERE output="rss_2.0"
AND url in ("http://rss.cnn.com/rss/edition.rss",
            "http://bad.url.com/nothing",
            "http://rss.cnn.com/rss/edition_space.rss")

所以我实际上有两个问题:

  1. 如何将每个Feed限制为一定数量的项目? (例如,我想从每个频道获得前3个项目)
  2. 请注意,第二个URL无效(不是真实RSS的URL)。在这种情况下,YQL结果返回2个有效通道加上一个错误,但没有迹象表明哪些URL有效且哪一个失败。
    换句话说 - 对于每个结果Feed,没有指示它到达的URL 关于如何识别每个渠道的任何想法?
  3. 感谢

1 个答案:

答案 0 :(得分:1)

第一个问题:

首先想到的是使用query.multi

SELECT rss.channel.item FROM query.multi WHERE queries="
   SELECT channel.item FROM feednormalizer WHERE output='rss_2.0' AND url = 'http://rss.cnn.com/rss/edition.rss' LIMIT 3; 
   SELECT channel.item FROM feednormalizer WHERE output='rss_2.0' AND url = 'http://rss.cnn.com/rss/edition_space.rss' LIMIT 3;"

不是最优雅的方式,但它有效。

第二个问题:

我认为不可能。由于YQL的WHERE x IN ()...语法实际上不是SQL连接,因此无法在投影中选择内部子查询的部分内容,以及您需要的内容。

如果有人在这个问题上让我错了,会很高兴,因为我自己需要这几次并且总是以编程方式解决它:)