6

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

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

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

4

2 回答 2

3

不幸的是,我不知道如何在响应中获取 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'"

在这里试试。您可以做的是在触发查询之前,urlqueries类似 so 的数组中维护顺序['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>

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

于 2013-10-07T23:15:42.817 回答
1

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

于 2013-10-12T12:56:30.733 回答