使用YQL和feednormalizer从rss或atom feed获取前n个条目

时间:2015-12-04 16:10:33

标签: xml xpath rss yql atom-feed

我使用YQL将RSS和ATOM提要检索为JSON,并使用feednormalizer表将它们规范化为ATOM样式。

select * from feednormalizer where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb'

我只需要获得前X个条目。从理论上讲,我知道an xpath expression should be able to do that。但是,当我尝试一个我认为应该工作的时候......

select * from feednormalizer where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb' AND xpath='//entry[count(preceding::entry) < 5]'

...结果对象返回null。我还在xpath查询中尝试了using item instead of entry,因为这是RSS源在实际XML中的含义。这也会返回一个null结果对象。

我试过的其他东西

限制

我也尝试使用both local and remote limits,它会返回相同数量的条目,就像我没有指定限制一样。

select * from feednormalizer(0,5) where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb'

select * from feednormalizer where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb' limit 6

使用CrossProduct选择列

值得注意的是,我仍然需要典型select *查询附带的所有元数据。也就是说,我需要Feed的标题,链接等,我宁愿他们留在根元素。所以,我知道我可以做到

select title, link, entry from feednormalizer(0,6) where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb'

select title, link, entry from feednormalizer where output='atom_1.0' AND url='http://feeds.delicious.com/v2/rss/msuweb' limit 6

但这会将标题和供稿链接直接放在列表中的每个条目上,即使URL字符串中包含crossProduct=optimized也是如此。叫我挑剔,但我宁愿不这样做。

1 个答案:

答案 0 :(得分:0)

可能真的很晚但是对于像我这样有其他问题的人,我完成了2个请求。元数据的第一个:

select * from feednormalizer 
where output='atom_1.0' 
AND url='http://feeds.delicious.com/v2/rss/msuweb'

和第二个限制数据:

select title, link, entry 
from feednormalizer(0,6) 
where output='atom_1.0' 
AND url='http://feeds.delicious.com/v2/rss/msuweb'

!没有优化但有效!