2010-03-22 92 views
0

我讀過YQL指南,我一直在回顧http://developer.yahoo.com/yql/guide/yql-o...entables-paging,我一直在看幾個例子,但是我仍然對YQL分頁的工作方式感到困惑。如何實現YQL分頁?

,我試圖解決創造了Mozilla實驗室的Jetpack畫廊的飛行揹包頁面的YQL開放的數據表中的問題http://jetpackgallery.mozillalabs.com/jetpacks

您可以通過與?頁面查詢變量飛行揹包的頁面翻轉和存在ORDER_BY查詢變量。每頁只能看到10個結果。

問題:

  • 列表項
  • 我應該使用或?
    • 如何指定指示頁面的查詢參數?在這種情況下,它是'頁面'查詢參數。
  • 我假設我應該使用:<urls><url>http://jetpackgallery.mozillalabs.com/jetpacks</url></urls>這是正確的嗎?
  • 在execute元素中,我需要提取頁面上每個jetpack的詳細信息?如果是的話,我將如何組織response.object?

任何人都可以提供一些幫助嗎?或者可能指向我可以看作參考的數據表?或更好的文件如何分頁工作?

回答

1

首先,你應該尋找在paging model(您的鏈接上面得到了壓縮,所以我只是把它放在這裏。

當您使用沒有指定<execute></execute>塊分頁,它將在使用查詢字符串,在<url></url>中指定的URL,只需要使用Flickr Photo Search Example,就必須在控制檯打開診斷程序來查看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中被使用。

我想應該回答你的問題,因爲我看到on 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 [email protected]", 
     {url: "http://jetpackgallery.mozillalabs.com/jetpacks?page=" + page} 
     );