天道酬勤,学无止境

如何使用 YQL 合并 2 个按 pubDate 排序的 RSS 提要?(How to use YQL to merge 2 RSS feeds sorted by pubDate?)

问题

看到 YQL 被宣传为一种很好的做事方式,我很好奇如何使用 YQL 获取并合并 2 个不同的提要(按 pubDate 排序)。

获取 2 个提要非常简单,但事实证明这些提要只是连接在一起而不是合并。

这是示例代码。

select channel.title,channel.link,channel.item.title,channel.item.link
    from xml where url in(
      'http://code.flickr.com/blog/feed/rss/',
      'http://feeds.delicious.com/v2/rss/codepo8?count=15',
      'http://www.stevesouders.com/blog/feed/rss',
      'http://www.yqlblog.net/blog/feed/',
      'http://www.quirksmode.org/blog/index.xml'
    )
回答1

感谢您提供此信息。 它也适用于访问 rss 对象:

select title,link,pubDate from rss where url in (
    'http://feeds.delicious.com/v2/rss/hasematzel?count=3',
    'http://oliverschwarz.tumblr.com/rss',
    'http://twitter.com/statuses/user_timeline/818226.rss',
    'http://hasematzel.de/blog/feed/',
    'http://piepmatzel.de/feed/'
) | sort(field="pubDate", descending="true")

这是创建新闻编辑室或生活流的一种非常简单的方法。 不要忘记强制缓存 YQL 返回 :)

回答2

这应该可以解决问题

select channel.item.title,channel.item.link, channel.item.pubDate
    from xml where url in(
      'http://code.flickr.com/blog/feed/rss/',
      'http://feeds.delicious.com/v2/rss/codepo8?count=15',
      'http://www.stevesouders.com/blog/feed/rss',
      'http://www.yqlblog.net/blog/feed/',
      'http://www.quirksmode.org/blog/index.xml'
    )
  | unique(field="channel.item.link")
  | sort(field="channel.item.pubDate", descending="true")

使用独特的后查询功能过滤掉重复项并排序以重新排序您的结果。 这里是这些函数的文档链接 http://developer.yahoo.com/yql/guide/sorting.html

回答3

至于 RSS 问题 - YQL 总是返回 XML - 如果您想将其转换为 RSS 提要,您还可以使用 Yahoo Pipes 和 YQL 模块将其作为 RSS 获取。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何获得 YQL 的格式化视图作为结果?(How to get the formatted view of YQL as result?)
    问题 YQL 仅在树视图中给出结果。 有没有办法在格式化视图中获得结果? 回答1 使用 XSLT 样式表创建格式化视图。 以下是 RSS 提要的示例: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="XML" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd indent="yes"/> <xsl:template match='//channel'> <page> <content> <module> <header layout="simple"> <layout-items> <block class="title">YDN Widget</block> </layout-items> </header> </module> <xsl:apply-templates select="item" /> <
  • How to use YQL to merge 2 RSS feeds sorted by pubDate?
    Seeing that YQL is being promoted as a good way to do things, I was curious as to how to use YQL to fetch and merge 2 different feeds into one (sorted by pubDate). It's pretty trivial to fetch 2 feeds but it turns out that the feeds are just concatenated together and not merged. Here's the sample code. select channel.title,channel.link,channel.item.title,channel.item.link from xml where url in( 'http://code.flickr.com/blog/feed/rss/', 'http://feeds.delicious.com/v2/rss/codepo8?count=15', 'http://www.stevesouders.com/blog/feed/rss', 'http://www.yqlblog.net/blog/feed/', 'http://www.quirksmode
  • Yahoo Weather API WOEID检索(Yahoo Weather API WOEID retrieval)
    问题 我正在创建一个应用程序(PHP),该应用程序从免费的RSS提要中获取雅虎天气数据,并根据从RSS提要中获取的数据将其与彩色十六进制相关联。 我遇到的问题是找到一种无需手动执行即可获取位置代码或WOEID的方法。 只要您提供WOEID,Yahoos API就会发回RSS feed-> http://weather.yahooapis.com/forecastrss?w=4097 有道德的方式做到这一点吗? 我的初学者知识告诉我,我必须编写一个脚本,该脚本将使用该术语搜索yahoo并获取第一个WOEID,但是我认为yahoo不想让脚本这样做,而且似乎过于复杂了……如果没有,是否还有其他选择可以让我更轻松地使用的API? 谢谢! 回答1 为什么不只使用Yahoo! GeoPlanet服务可将位置解析为WOEID? 还是使用YQL服务通过表访问GeoPlanet? http://where.yahooapis.com/v1/places.q('Barrie CA')?appid=[yourappidhere] 或者 http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Barrie%20CA%22&format=xml 无需刮擦。 干杯 G (公¼
  • Yahoo YQL RSS - Bad Request
    For making cross-domain AJAX requests with jQuery, I am trying to use YQL RSS. select * from rss where url='https://www.top1000funds.com/feed/most-popular-posts/' My code: var feed = "https://www.top1000funds.com/feed/most-popular-posts/"; var yql = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20rss%20where%20url%3D%22"+encodeURIComponent(feed)+"%22&format=json&diagnostics=true&callback=&rnd=_"+event.timeStamp; console.log(yql); $.getJSON(yql, function(res) { var html = '<div class="feedListWrap">'; if(res.query && res.query.results && res.query.results.item){ //code goes
  • 返回雅虎! 摄氏天气 API 数据,使用 YQL(Return Yahoo! weather API data in Celsius, using YQL)
    问题 我正在尝试获取 Yahoo! 温度为摄氏度的天气 API。 我在请求中添加了&u=c ,但它仍然以华氏温度返回数据。 这是我正在使用的网址: http://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20location=%22LEXX0003%22&format=json&u=c 和回应: {"query":{"count":1,"created":"2014-01-13T13:06:43Z","lang":"en-US","results":{"channel":{"item":{"title":"Conditions for Beirut, LE at 1:59 pm EET","lat":"33.82","long":"35.48","link":"http://us.rd.yahoo.com/dailynews/rss/weather/Beirut__LE/*http://weather.yahoo.com/forecast/LEXX0003_f.html","pubDate":"Mon, 13 Jan 2014 1:59 pm EET","condition":{"code":"30","date":"Mon, 13 Jan 2014 1
  • 如何使用 Google 群组讨论抓取工具(How to approach Google groups discussions crawler)
    问题 作为 RSS 的练习,我希望能够搜索几乎所有关于该组的 Unix 讨论。 comp.unix.shell 我了解足够多的 Python 并理解基本的 RSS,但我仍然坚持......我如何获取特定日期之间的所有消息,或者至少是 Nth 最近和 Mth 最近之间的所有消息? 高级描述,欢迎使用伪代码。 谢谢! 编辑: 我希望能够返回 100 多条消息,但不要像一次解析 10 条消息那样抓取,例如使用以下 URL: http://groups.google.com/group/comp.unix.shell/topics?hl=en&start=2000&sa=N 肯定有更好的办法。 回答1 正如 Randal 所提到的,这违反了 Google 的 ToS——但是,作为假设或在没有这些限制的其他站点上使用,您可以很容易地使用 urllib 和 BeautifulSoup 进行设置。 使用 urllib 打开页面,然后使用 BeautifulSoup 抓取所有线程主题(如果您想更深入地抓取,还可以使用链接)。 然后,您可以以编程方式找到下一页结果的链接,然后创建另一个 urllib 以转到第 2 页——然后重复该过程。 此时您应该拥有所有原始数据,然后只需处理数据并实现您的搜索功能即可。 回答2 抓取 google 群组违反了 Google 的服务条款,特别是以下短语:
  • 用jQuery解析RSS(Parse RSS with jQuery)
    问题 我想使用jQuery解析RSS feed。 可以使用现成的基本jQuery库完成此操作,还是需要使用插件? 回答1 警告 Google Feed API已正式弃用,无法再使用! 不需要整个插件。 这会将您的RSS作为JSON对象返回给回调函数: function parseRSS(url, callback) { $.ajax({ url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url), dataType: 'json', success: function(data) { callback(data.responseData.feed); } }); } 回答2 使用jFeed-一个jQuery RSS / Atom插件。 根据文档,它很简单: jQuery.getFeed({ url: 'rss.xml', success: function(feed) { alert(feed.title); } }); 回答3 对于我们后面讨论的那些人,从1.5开始,jQuery具有内置的xml解析功能,这使得在没有插件或第三者服务的情况下轻松进行此操作变得很容易。
  • 使用AJAX加载RSS feed:Google Feed API的替代品吗?(Loading RSS feed with AJAX: alternatives to Google Feed API?)
    问题 我一直在使用Google Feed API加载RSS feed,但是Google似乎已经关闭了该API。 例如,当我尝试在http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&q=http%3A%2F%2Frss.nytimes.com%2Fservices%2Fxml%2Frss%2Fnyt%2FHomePage.xml加载《纽约时报》 RSS提要时http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&q=http%3A%2F%2Frss.nytimes.com%2Fservices%2Fxml%2Frss%2Fnyt%2FHomePage.xml ,我得到以下响应: {"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403} 有没有可行的选择? 回答1 使用Yahoo的YQL API: select * from xml where url = 'https://news.ycombinator.com/rss' 您可以通过向网址添加callback参数来请求JSONP供稿
  • YQL:不再支持html表(YQL: html table is no longer supported)
    问题 我使用YQL来获取一些html页,以便从中读取信息。 从今天开始,我收到返回消息“不再支持html表。有关YQL使用条款,请参见https://policies.yahoo.com/us/en/yahoo/terms/product-atos/yql/index.htm” 控制台中的示例:https://developer.yahoo.com/yql/console/#h=select+*+from+html+where+url%3D%22http%3A%2F%2Fwww.google.de%22 雅虎停止了这项服务吗? 有人知道雅虎发布的公告吗? 我想知道这仅仅是一个错误还是他们真的停止了这项服务? 所有文档仍然存在(html抓取):https://developer.yahoo.com/yql/guide/yql-select-xpath.html,https://developer.yahoo.com/yql/ 前一阵子,我在Yahoo的YQL论坛上发帖,现在这个已经不存在了(或者至少我找不到)。 您如何联系Yahoo,以了解这项服务是否真的停止了? 最好的问候,hebr3 回答1 截至2017年6月8日,雅虎似乎确实终止了对html库的支持(根据我的错误日志)。 似乎还没有任何正式的公告。 幸运的是,这里有一个YQL社区库
  • Return Yahoo! weather API data in Celsius, using YQL
    I'm trying to get Yahoo! weather API with temperatures in Celsius. I've added &u=c in the request, but it's still returning data in Fahrenheit. This is the URL I'm using: http://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20location=%22LEXX0003%22&format=json&u=c And the response: {"query":{"count":1,"created":"2014-01-13T13:06:43Z","lang":"en-US","results":{"channel":{"item":{"title":"Conditions for Beirut, LE at 1:59 pm EET","lat":"33.82","long":"35.48","link":"http://us.rd.yahoo.com/dailynews/rss/weather/Beirut__LE/*http://weather.yahoo.com/forecast
  • XML 文档排序(XMLdocument Sort)
    问题 我已经想出了如何在正确的结构中将节点附加到我的 rss 文档中。 我现在需要按 pubDate 顺序对其进行排序,然后输出到屏幕。 查看在线示例,我发现了很多 XDocument 和 Linq 内容,但 XmlDocument 却没有。 抓挠我的脑袋是要废弃我拥有的代码,并根据此处的建议在 XDocument 中解决此问题,还是继续使用 XMLDocument 并找出排序方法。 使用 XMLDocument,我让代码完全按照我的意愿工作,只需要我的提要在将它吐出到屏幕上时按 pubDate 顺序进行排序。 所以我想我会暂时坚持这个。 我找到了这篇文章 http://support.microsoft.com/kb/555060 和有人在 Stack Overflow 中发布的 xslt,但我不知道如何从我的代码中调用“XmlHelperFunctions”。 XSLT 是我拥有的最简单的选项,还是有更简单的方法? 这是我的代码: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(rssFeed.ToString()); XmlNodeList nl = xmlDoc.SelectNodes("/rss/channel/item"); foreach (XmlNode xn in nl) { string title
  • 之间有什么区别和在RSS中?(What is the difference between <pubDate> and <lastBuildDate> in RSS?)
    问题 在每个RSS.xml文件中,我都有pubDate和lastBuildDate匹配的感觉。 我敢肯定,这并不总是正确的... 那么首先,以上两者之间有什么区别? 其次,RSS阅读器根据pubDate或lastBuildDate按日期对内容进行排序? 回答1 pubDate: 频道或项目的原始发布日期。 (可选的) lastBuildDate: 最近一次修改频道的内容。 (可选的) 这是RSS 2.0规范中可选项目的一些文档。 回答2 这里的答案无处不在。 某些item也具有pubDate的事实使一些人感到困惑。 我认为OP在channel级别上专门询问lastBuildDate和pubDate之间的区别。 据我对RSS规范的最佳理解(该解释因模棱两可的解释而臭名昭著), lastBuildDate将是上一次创建提要。 例如,如果您将其副本缓存在服务器上一段时间,则lastBuildDate将是创建缓存副本的时间。 另一方面, pubDate似乎基本上是Feed中任何实际内容上次更改的时间。 在大多数情况下,Feed中的items几乎都是最新的pubDate值,因为通常,Feed的内容仅在发布一些新项目时才发生变化。 但是,也可能是您对频道本身进行了一些更改(例如更改频道标题,说明等)的日期。 回答3 lastBuildDate指定条目的最后修改日期/时间。
  • craigslist mashup 如何获取数据? [关闭](How do craigslist mashups get data? [closed])
    问题 就目前而言,这个问题不适合我们的问答形式。 我们希望答案得到事实、参考或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。 如果您认为此问题可以改进并可能重新打开,请访问帮助中心以获取指导。 9年前关闭。 我正在做一些关于内容聚合器的研究工作,我很好奇当前的一些 craigslist 聚合器是如何将数据导入到他们的 mashup 中的。 例如,www.housingmaps.com 和现已关闭的 www.chicagocrime.org 如果有网址可以参考就完美了! 回答1 对于 AdRavage.com,我结合使用 Magpie RSS(提取搜索返回的数据)和自定义屏幕抓取类来正确填充构建搜索时使用的城市/类别信息。 例如,要提取类别,您可以: //scrape category data $h = new http(); $h->dir = "../cache/"; $url = "http://craigslist.org/"; if (!$h->fetch($url, 300)) { echo "<h2>There is a problem with the http request!</h2>"; exit(); } //we need to get all category abbreviations (data looks like:
  • 用于货币转换的php脚本(php script for currency conversion)
    问题 我正在寻找一个进行货币转换的 php 脚本。 我在哪里可以找到一个适用于 codeigniter 的? 回答1 取自 http://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html#dev How to parse the data This is just an example <?php //This is a PHP (4/5) script example on how eurofxref-daily.xml can be parsed //Read eurofxref-daily.xml file in memory $XMLContent= file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); //the file is updated daily between 2.15 p.m. and 3.00 p.m. CET foreach ($XMLContent as $line) { if (ereg("currency='([[:alpha:]]+)'",$line,$currencyCode)) { if (ereg("rate='([[:graph:]]+)'",$line,$rate)) { /
  • 如何显示来自 RSS 提要的图像(How to display image from a RSS feed)
    问题 我正在尝试构建一个显示来自 http://news.yahoo.com/rss/ 的最新 RSS 提要的应用程序我能够使用 NSXMLParserDelegate 解析 xml,我能够显示日期和时间以及特定提要的标题,但我也想为每个提要显示一个图像,我知道如何解析主要元素,但我不知道如何传递以 url 作为键的子元素的属性...例如,上述提要包括以下内容: <item> <title>fooo</title> <description ahref="some link" image src="http://l1.yimg.com/bt/api/res/1.2/Wo3_apH.kz7DMvOj7MDtRQ--/YXBwaWQ9eW5ld3M7Zmk9ZmlsbDtoPTg2O3E9ODU7dz0xMzA-/http://media.zenfs.com/en_us/News/ap_webfeeds/20c464ff99815420210f6a706700a792.jpg" </description> 我需要在我的 tableview 中来自 IMG SRC 的图像以及该特定提要的标题和日期。 我很困惑如何解析 IMG SRC 属性并将其添加到我的 tableview 并更改大小,以便它不会破坏我的标题和日期。 到目前为止我做了什么: 视图DidAppear -(void
  • 如何按位置获得雅虎的 woeid? [关闭](How to get Yahoo's woeid by location? [closed])
    问题 关闭。 此问题不可重现或由拼写错误引起。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 10 个月前关闭。 改进这个问题 // Get woeid by lati/long HttpGet hg = new HttpGet( "http://where.yahooapis.com/geocode?location=" + latlon + "&flags=J&gflags=R)"); HttpClient hc = new DefaultHttpClient(); HttpResponse weatherHR = hc.execute(hg); if (weatherHR.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { if (DEBUG) Utils.log("", "Location != HttpStatus.SC_OK"); return null; } 我使用过这个 API 并且它之前工作正常,但是从今天起它返回一个错误,HttpStatus.SC_OK 不正常。 这个API被关闭了吗? 谢谢。 回答1 是的,它已关闭,请看这里:http://soup.metwit.com/post/47181933854/an-alternative-to
  • RSS 项目更新(RSS Item updates)
    问题 我正在为我们使用的自定义任务系统开发 RSS 提要,而且我仍在思考事情应该如何运作。 我想要的是每个用户的提要,显示分配给他们的任务,另外还有每个任务的提要,显示任务的更新。 我现在想知道的是用户提要。 当分配给用户的案例更新时,我目前有代码来更改该项目的 pubDate 条目和频道的 lastBuildDate。 我希望这会使该项目在阅读器中显示为未读,以便用户知道再次查看该项目,但情况似乎并非如此。 我是否应该更改 guid,即使它确实是相同的项目? 那会有什么副作用? 有什么我想念的吗? 我该如何解决这个问题? 回答1 更改 <pubDate> 确实表明条目已更改,但不要求给定的 RSS 阅读器对此做任何事情。 (严格来说,RSS 阅读器不需要做任何事情,但让我们保持理性。)一些阅读器确实将更新的条目标记为已更改。 例如,Bloglines.com 可以选择检测 <description> 中的更改,并在这种情况下再次将条目标记为新条目。 根据您的读者,更改 <title>、<description> 或 <pubDate> 可能会为您提供所需的行为。 但是正如 GateKiller 上面提到的,您最安全的选择是使用新的 <guid> 使其成为一个全新的条目。 在此期间,您可能希望将其用作添加直接链接或有关更新的详细信息的机会。 当然,如果您同时编写 RSS
  • Nokogiri 一次解析多个 XML 提要并按日期排序(Nokogiri parsing multiple XML feeds at once and sort by date)
    问题 我正在使用 Rails 和 Nokogiri 来解析一些 XML 提要。 我已经解析了一个 XML 提要,我想解析多个提要并按日期对项目进行排序。 它们是 Wordpress 提要,因此它们具有相同的结构。 在我的控制器中,我有: def index doc = Nokogiri::XML(open('http://somewordpressfeed')) @content = doc.xpath('//item').map do |i| {'title' => i.xpath('title').text, 'url' => i.xpath('link').text, 'date' => i.xpath('pubDate').text.to_datetime} end end 在我看来,我有: <ul> <% @content.each do |l| %> <li><a href="<%= l['url'] %>"><%= l['title'] %></a> ( <%= time_ago_in_words(l['date']) %> )</li> <% end %> </ul> 上面的代码可以正常工作。 我尝试解析多个提要并收到 404 错误: feeds = %w(wordpressfeed1, wordpressfeed2) docs = feeds.each { |d|
  • 这是什么类型的HTML表格,可以使用哪种类型的网络抓取技术? [关闭](What type of HTML table is this and what type of webscraping techniques can you use? [closed])
    问题 这个问题不太可能对将来的访客有所帮助; 它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。 要获得使该问题更广泛适用的帮助,请访问帮助中心。 8年前关闭。 我正在尝试使用R提取此链接中的数据,该链接为http://www.rchsd.org/doctors/index.htm?strt=0&ln=&fn=&sp=&grp=&loc=&lng=&gen=难的。 我注意到,只要单击页面编号,URL链接就不会更改。 该表是用JavaScript创建的吗? 该表是由某个外部源创建的,我如何访问它? 另外,这种桌子有技术名称吗? 此外,对于任何知道使用R或任何其他程序进行Web抓取的人,您将如何从该表中提取所有数据? 我尝试在R使用以下代码提取数据,但得到NULL 。 您将如何解决这个问题? mps <- paste("http://www.va.gov/providerinfo/SANDIEGO/index.asp?servicesearch=&specialtysearch=&gendersearch=&sort=&currentPage=1") mps.doc <- htmlParse(mps) mps.tabs <- readHTMLTable(mps.doc) 另外,如果您不能回答我问题的后半部分,那也可以。
  • 将 html 表转换为 php 数组的最快方法是什么?(What is the fastest way to convert html table to php array?)
    问题 最新版本的 php 中是否有专门用于帮助完成此任务的内置函数? 回答1 使用像 SimpleXML 这样的 DOM 解析器将 HTML 代码拆分为节点,并遍历节点以构建数组。 对于损坏/无效的 HTML,SimpleHTMLDOM 更为宽松(但它不是内置的)。 回答2 如果 HTML 代码干净且始终相同,字符串替换和爆炸将起作用,只要您有新属性,它就会停止。 因此,唯一可靠的解决方案是使用正则表达式或 XML/HTML 解析器。 检查 http://php.net/manual/en/book.dom.php 回答3 使用本机 DOM 解析器的替代方法是使用 YQL。 这样您就不必自己进行实际的解析。 YQL Web 服务使应用程序能够查询、过滤和组合来自 Internet 上不同来源的数据。 例如,要使用给出的类示例获取 HTML 表 http://www.w3schools.com/html/html_tables.asp 你可以做 $yql = 'http://tinyurl.com/yql-table-grab'; $yql = json_decode(file_get_contents($yql)); print_r( $yql->query->results ); 我已经考虑过缩短网址,以免弄乱答案。 $yql实际上链接到 YQL API,添加了一些选项并包含查询