【问题标题】:Limiting and handling errors in YQL RSS feednormalizerYQL RSS feednormalizer 中的错误限制和处理
【发布时间】:2011-06-13 10:30:13
【问题描述】:

我正在使用 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. 如何将每个提要限制为一定数量的项目? (例如,我想从每个频道中获取前 3 项)
  2. 请注意,第二个 URL 无效(不是真正的 RSS 的 URL)。在这种情况下,YQL 结果返回 2 个有效通道和一个错误,但没有指示哪些 URL 有效,哪些失败。
    换句话说 - 对于每个结果提要,没有迹象表明它来自哪个 URL。
    关于如何识别每个频道的任何想法?

谢谢

【问题讨论】:

    标签: rss yql


    【解决方案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 连接,因此无法在投影中选择部分内部子查询,这是您的情况所需要的。

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

    【讨论】:

    • 谢谢。第一个答案有帮助。但是结果的格式有点乱,需要单独请求通道的数据。但它给了我第二个问题的想法:您可以使用多查询,如果单个提要无效 - 您可以通过结果中的索引知道它是哪一个。也不是最优雅的 - 但至少它可以工作:) 无论如何 - 再次感谢您的帮助!
    猜你喜欢
    • 2016-03-09
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2011-07-30
    • 2013-10-07
    • 2012-03-05
    相关资源
    最近更新 更多