Как реализовать пейджинг YQL?

Я прочитал руководство по YQL и постоянно просматриваю http://developer.yahoo.com/yql/guide/yql-o...entables-paging и я просмотрел несколько примеров, но я все еще не совсем понимаю, как работает пейджинг YQL.

Проблема, которую я пытаюсь решить, заключается в создании таблицы открытых данных YQL для страниц реактивных ранцев Mozilla labs Jetpack Gallery http://jetpackgallery.mozillalabs.com/jetpacks

Вы листаете страницы реактивных ранцев с помощью переменной запроса ?page, и есть переменная запроса order_by. Вы можете увидеть только 10 результатов на странице.

Вопросы:

  • Пункт списка
  • Should I use or ?
    • How do I specify the query parameter that indicates the page? in this case it is the 'page' query parameter.
  • Я предполагаю, что мне следует использовать: <urls><url>http://jetpackgallery.mozillalabs.com/jetpacks</url></urls> это правильно?
  • В элементе выполнения мне нужно будет извлечь детали для каждого реактивного ранца на странице? если да, то как бы я организовал это для response.object?

Кто-нибудь может помочь? или, возможно, указать таблицу данных, на которую я могу посмотреть в качестве ссылки? или лучшая документация о том, как работает пейджинг?


person erikvold    schedule 22.03.2010    source источник


Ответы (1)


Во-первых, вам следует обратить внимание на модель пейджинга. (Ваша ссылка была сжата выше, поэтому я просто помещаю ее здесь.

Когда вы используете пейджинг без указанного блока <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-адреса для иллюстрации), как и ожидалось, чтобы получить результаты.

Переменные подкачки также определяются в глобальной области видимости, если вы используете JavaScript в разделе <execute></execute>. Вы можете увидеть, как это используется в flickr. photos.astro Таблица открытых данных.

Я думаю, это должно ответить на вопрос для вас, так как я вижу, что на 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}
       );
person sirhc    schedule 18.05.2010