首先,您应该查看分页模型(您的链接在上面被压缩,所以我只是把它放在这里。
当您使用没有<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}
);