使用Yahoo Pipes从RSS提要项的链接页面中提取元素,将结果转换为RSS提要

时间:2013-12-06 20:21:20

标签: xpath yahoo-pipes

德国最高法院出版an RSS feed of all its decisions。遗憾的是,此RSS源中的项目不是直接链接到决策的PDF,而是链接到iFrame中包含PDF的网页。

网页都是以并行方式构建的。例如,在a random RSS feed item's linked web page中,源代码中的相对链接将如下所示:

<iframe border='0' src='document.py?Gericht=bgh&amp;Art=en&amp;Datum=Aktuell&amp;nr=66132&amp;Frame=4&.pdf' width='744px' height='100%'>Leider kann Ihr Browser keine eingebetteten Frames darstellen. Klicken Sie <a href='document.py?Gericht=bgh&amp;Art=en&amp;Datum=Aktuell&amp;nr=66132&amp;Frame=4&.pdf'>hier</a>, um das gewünschte Dokument zu erhalten.</iframe>

链接都是相对于文件夹

http://juris.bundesgerichtshof.de/cgi-bin/rechtsprechung/

我想将此RSS源转换为RSS源,其中每个项目的链接都是直接链接到PDF的链接,因此在我的示例中,RSS源项目的链接应变为“http://juris.bundesgerichtshof.de/cgi-bin/rechtsprechung/document.py?Gericht=bgh&Art=en&Datum=Aktuell&nr=66132&Frame=4&.pdf”。

我的想法是使用Yahoo Pipes循环遍历RSS提要的所有项目,按照项目的链接,查看网页的源代码并在<iframe border='0' src='和下一个{'之间提取字符串。 1}},将绝对文件夹路径粘贴在相对结果的前面,然后将其重新分配给项目的链接。我的悲惨尝试是here。基本上,我不知道在XPath模块中输入什么。

1 个答案:

答案 0 :(得分:1)

我有个坏消息。我担心这是不可能的。

在这种情况下的解决方案是创建两个管道:

  1. 低级管道:

  2. 更高级别的管道:

    • 使用抓取Feed
    • 获取原始网址
    • 循环遍历Feed项,在每次迭代中使用Feed项的URL字段调用低级管道并将结果分配给属性
    • 根据新分配的属性构建网址
  3. 这可能会奏效。不幸的是,除此之外,该网站拒绝Yahoo Pipes:它在尝试获取该页面时收到“Forbidden 403”错误。

    所以这不能直接与Yahoo Pipes一起使用。另一种方法是,如果您可以设置代理服务器,它可以转发请求,以便德国网站无法知道它们来自Yahoo Pipes。

    顺便说一句,这与我无法基于IMDB(互联网电影数据库)创建自定义订阅源的原因相同。他们拒绝来自Yahoo Pipes的所有请求。