2015-02-18 3 views
1

Я использую таблицу boss.search для извлечения данных в XML, но я хотел бы получить определенные поля.Какой правильный синтаксис для оператора SELECT в результатах YQL?

Стандартный синтаксис:

SELECT * from boss.search WHERE q="stackoverflow" AND ck = 'ConsumerKey' AND secret = 'ConsumerSecret'; 

, который работает.

Но когда я пытаюсь выбрать поля, как "/title" или "/results/result/title", я получил ошибку синтаксиса:

Query syntax error(s) [line 1:7 expecting fields_or_star got '/result/title']

Что такое правильный синтаксис извлечения полей (например, title)?

Ответ REST выглядит следующим образом:

<results> 
    <bossresponse> 
     <web> 
      <results> 
       <result> 
        <date/> 
        <clickurl>https://example.com/</clickurl> 
        <url>https://example.com/</url> 
        <dispurl type="default">https://example.com/</dispurl> 
        <title type="default">Example</title> 
        <abstract type="default">Example</abstract> 
       </result> 
       <result> 

ответ

1

Вы можете проверить, что в 'Syntax of SELECT - Specifying the Elements Returned' (cached) Yahoo Query Language документации.

Если поля в наборе результатов содержат подполя, вы можете указать подполя, используя периоды (точки) в качестве разделителей.

Пользовательские таблицы

Например, для social.profile таблицы, чтобы получить только imageUrl суб-поле image поля из следующего примера:

. . . 
<results> 
    <profile xmlns="http://social.yahooapis.com/v1/schema.rng"> 
     <image> 
      <imageUrl>http://l.yimg.com/us.yimg.com/i/identity/nopic_192.gif</imageUrl> 
     </image> 
    </profile> 
</results> 

входят следующие:

select image.imageUrl from social.profile where guid=me 

BOSS API

В ответе BOSS это немного отличается. Чтобы получить заголовок из таблицы boss.search, вам нужно указать это поле как: web.results.result.title, например.

SELECT web.results.result.title FROM boss.search WHERE q="stackoverflow" 

HTML

Чтобы получить только содержимое из HTML страницы, вы можете указать content ключевое слово после слова SELECT. Заявление с content ключевого слова обрабатывает HTML в следующем порядке:

  1. Это выглядит для любого элемента с именем content в элементах, найденных.
  2. Если элемент с именем content не найден, оператор ищет атрибут с именем content.
  3. Если ни элемент, ни атрибут с именем content не найдены, оператор возвращает элемент textContent.

Например, следующий оператор извлекает только HTML ссылки (href метки) для Yahoo Groups:

SELECT href FROM html WHERE url="http://groups.yahoo.com/search?query=surfing&sort=relevance" and compat="html5" AND xpath='//li[contains(@class,"hbox groupsSearch-result-entry")]/h4/a' 

следующее заявление, например, возвращает TextContent каждого якорного a тега извлекаться по XPath выражение:

SELECT content FROM html WHERE url="http://groups.yahoo.com/search?query=surfing&sort=relevance" AND compat="html5" AND xpath='//li[contains(@class,"hbox groupsSearch-result-entry")]/h4/a' 

Источник: Extracting HTML - Using YQL and Open Data Tables в руководстве YQL