如何使用Yahoo Pipes创建正确的RSS pubDate?

时间:2014-02-25 18:28:09

标签: yahoo-pipes

我想将24 february 2014格式的日期转换为正确的RSS pubDate格式(我的网页上实际上february是用俄语写的)。 我有以下代码来创建自己的RSS -

XPath抓取页面

URL: http://www.tcsbank.ru/about/news-archive/
Extract Using XPath: //li[@class='news-list__item']
Use HTML5 parser: yes

循环

For each *item* in input field
  ...
  PubDate: item.span
emit *all* results

循环

For each *item.pubDate*
  Replace
  first * january * with *.01.*
  first * february * with *.02.* 
  ...
assign results to *item.pubDate*

结果,我的pubDate包含DD.MM.YYYY格式的值(仅适用于Replace仅支持10个替换的前10个月)。这仍然是无效的日期。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你可以像上一个一样添加一个循环,以完成剩下的几个月:

For each *item.pubDate*
  Replace
  first * november * with *.11.*
  first * december * with *.12.* 
  ...
assign results to *item.pubDate*

但更简单的解决方案是使用正则表达式代替循环

in item.pubDate replace january with 01
in item.pubDate replace february with 02
...

再次创建过去两个月的第二个正则表达式。 (同样最多10个条目限制)

最后,要将这些现在的数字日期转换为其他日期格式,您可以使用正则表达式替换,如下所示:

in item.pubDate replace (\d\d)\.(\d\d)\.(\d{4}) with $3-$2-$1

这会将DD.MM.YYYY格式转换为YYYY-MM-DD格式。如果您需要稍微不同的格式,请适当调整表达式。

<强>更新

我克隆了原来的管道并尽我所能:

http://pipes.yahoo.com/pipes/pipe.info?_id=cda36fe2b6f05160860c30bf1f0ece06

...遗憾的是,它仍然不起作用:RSS视图仍然不包含pubDate,即使我将其转换为正确的DateTime对象。同样奇怪的是,管道的页面首先显示警告,某些东西不是正确的DateTime对象,但随后视图会发生变化并正确显示供稿条目。我不明白那里不是一个合适的DateTime对象。

雅虎管道有缺陷。 工作的许多事情都不起作用,但有时会有一种解决方法。如果玩足够长的话,也许你会找到一个。但也许不是。祝你好运。