【问题标题】:Getting back urls while loading multiple urls with YQL使用 YQL 加载多个 url 时取回 url
【发布时间】:2013-10-02 20:13:51
【问题描述】:

我正在使用 YQL 获取一堆页面,其中一些可能处于脱机状态(显然我不知道哪些页面)。我正在使用这个查询:

SELECT * FROM html WHERE url IN ("http://www.whooma.net", "http://www.dfdsfsdgsfagdffgd.com", "http://www.cnn.com")

第一个和最后一个是实际站点,而第二个显然不存在。实际上返回了两个结果,但加载它们的 url 没有出现在任何地方。那么如果不是查询中的每个页面都被加载,那么找出哪个html页面属于哪个url的方法是什么?

【问题讨论】:

  • 我不明白。 “但是加载它们的 url 没有出现在任何地方”你希望上面的代码做到这一点吗? "找出哪个html页面属于哪个url" eing???
  • 我以为很清楚,对不起!让我再解释一下。我加载了一堆 url,其中一些被加载,然后加载的 url 被打包到一个数组中并发回给我。问题是:我不知道数组中的每个元素都对应于哪个 url。因此,我需要返回几个 (url, data) 而不是代码,以便我知道哪些数据对应于哪个 url,以及哪些 url 没有加载。

标签: html url load yql


【解决方案1】:

不幸的是,我不知道如何在响应中获取 key=>value 对,其中 key 是 url,value 是 html 响应。但是,您可以尝试以下查询,看看它是否符合您的用例:

select * from yql.query.multi where queries="select * from html where url='http://www.whooma.net';select * from feed where url='http://www.dfdsfsdgsfagdffgd.com';select * from html where url='http://www.cnn.com'"

试试here。您可以做的是在触发查询之前,在url 的数组中维护url 的顺序,就像这样 ['http://www.whooma.net','http://www.dfdsfsdgsfagdffgd.com','http://www.cnn.com']。我们可以称这个数组为A 当你遍历来自YQL 查询的响应时,不存在的url 将返回一个null。来自上述查询的示例响应:

<results>
  <results>
    // Response from select * from html where url='http://www.whooma.net'. This should be some html
  </results>
  <results>
    // Response from select * from feed where url='http://www.dfdsfsdgsfagdffgd.com'. This should be null.
  </results>
  <results>
    // select * from html where url='http://www.cnn.com'. This should also be some html
  </results>
</results>

因此,总而言之,您可以遍历数组 A 和来自 YQL 的响应。数组A 的第一个元素应对应于该YQL 响应的第一个results(内部结果)元素。即您正在从两个数组创建一个哈希图。我知道答案很长,但我认为它是必要的。如果有任何混淆,请告诉我。

【讨论】:

    【解决方案2】:

    您可以使用 YQL 诊断标志找出哪些网址没有加载。诊断标志将导致响应包含一个diagnostics 属性和一个url 数组,该数组指示是否找到了相应的服务器。据推测,一旦您消除了未加载的 url,结果页面将与剩余的 url 匹配。

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      相关资源
      最近更新 更多