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