0

我已经阅读了 YQL 指南,并且我一直在查看http://developer.yahoo.com/yql/guide/yql-o...entables-paging 并且我一直在查看一些示例,但我仍然很困惑 YQL 分页是如何工作的。

我要解决的问题是为 Mozilla 实验室 Jetpack Gallery 的喷气背包页面http://jetpackgallery.mozillalabs.com/jetpacks创建一个 YQL 开放数据表

您使用 ?page 查询变量翻阅喷气背包的页面,并且有一个 order_by 查询变量。每页只能看到 10 个结果。

问题:

  • 项目清单
  • 我应该使用 or 吗?
    • 如何指定指示页面的查询参数?在这种情况下,它是“页面”查询参数。
  • 我假设我应该使用:<urls><url>http://jetpackgallery.mozillalabs.com/jetpacks</url></urls>这是正确的吗?
  • 在执行元素中,我需要提取页面上每个喷气背包的详细信息吗?如果是这样,我将如何为 response.object 组织它?

谁能提供一些帮助?或者也许指向一个我可以作为参考的数据表?或者关于分页如何工作的更好的文档?

4

1 回答 1

1

首先,您应该查看分页模型(您的链接在上面被压缩,所以我只是把它放在这里。

当您使用没有<execute></execute>指定块的分页时,它将在带有指定 URL 的查询字符串中使用<url></url>。只需使用Flickr 照片搜索示例,您必须在打开诊断的控制台中运行它才能查看 URL 中的更改。该id属性用于在查询中插入数字。在这里只是为了说明,分页部分如下所示:

   <paging model="page">  
     <start id="page" default="0" />  
     <pagesize id="per_page" max="250" />  
     <total default="10" />  
   </paging>  

例如,查询

select * from flickr.photos.search(10,20) where has_geo="true"`

使用的 URL 是http://api.flickr.com/services/rest/?method=flickr.photos.search&has_geo=true&page=1&per_page=30. 如您所见,它实际上采用了page=1但要求的per_page=30并在内部截断了前 10 个结果,以便您获得 10 个偏移量和总共 20 个结果。YQL 之所以这样做,是因为选择的模型是page.

另一个示例,如果您尝试这样做:

select * from flickr.photos.search(249,2) where has_geo="true"

YQL 将按预期检索...&page=1&per_page=250...&page=2&per_page=250 (我已经缩短了 url 以进行说明)以获得结果。

<execute></execute>如果您在节中使用 JavaScript,则分页变量也在全局范围内定义。您可以在flickr.photos.astro OpenData Table中看到它被使用。

我想这应该为你回答了这个问题,因为我在 GitHub 上看到了,你一直在研究如何使用 XPath 提取页面。

对于你的情况,你应该有类似的东西:

   <paging model="page">  
     <start id="page" default="1" />  
     <pagesize id="per_page" max="10" />  
     <total default="10" />  
   </paging>  

per_page将在您的内部查询中,但它用于 YQL 以确定所需的查询。然后在您的 JavaScript 中可能会执行以下操作:

   y.query(
       "select * from html where url=@url",
       {url: "http://jetpackgallery.mozillalabs.com/jetpacks?page=" + page}
       );
于 2010-05-18T12:52:03.890 回答