我正在使用YQL来获取一堆页面,其中一些页面可能处于脱机状态(显然我不知道哪些页面).我正在使用此查询:
SELECT * FROM html WHERE url IN ("http://www.whooma.net", "http://www.dfdsfsdgsfagdffgd.com", "http://www.cnn.com")
Run Code Online (Sandbox Code Playgroud)
第一个和最后一个是实际站点,而第二个显然不存在.实际上返回了两个结果,但是加载它们的URL不会出现在任何地方.那么如果没有加载查询中的每个页面,那么找出哪个html页面属于哪个url的方法是什么?
不幸的是,我不知道如何在响应中获取 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'"
Run Code Online (Sandbox Code Playgroud)
在这里尝试一下。您可以做的是在触发查询之前,维护数组中的顺序,url例如queriesso
['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>
Run Code Online (Sandbox Code Playgroud)
总之,您可以迭代AYQL 的数组和响应。数组的第一个元素A应对应于results该 YQL 响应的第一个(内部结果)元素。即您正在从两个数组创建一个哈希图。我知道答案很长,但我认为这是必要的。如果有任何困惑,请告诉我。