1

テーブルを使用boss.searchして XML でデータを抽出していますが、特定のフィールドを取得したいと考えています。

標準的な構文は次のとおりです。

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

動作します。

"/title"しかし、またはのようなフィールドを選択しようとすると"/results/result/title"、構文エラーが発生します。

クエリ構文エラー [fields_or_star が '/result/title' であることを期待する行 1:7]

フィールド ( など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>
4

1 に答える 1

1

「 SELECT の構文 - 返される要素の指定」( 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

ボス API

BOSS レスポンスでは少し異なります。Boss.search テーブルからタイトルを取得するには、フィールドに次web.results.result.titleのような名前を付ける必要があります。

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

HTML

contentHTML ページからコンテンツだけを取得するには、単語の後にキーワードを指定できますSELECT。キーワードを含むステートメントはcontent、次の順序で HTML を処理します。

  1. 見つかった要素内で名前が付けられcontentた要素を探します。
  2. という名前の要素contentが見つからない場合、ステートメントは という名前の属性を探しますcontent
  3. 指定された要素も属性もcontent見つからない場合、ステートメントは要素の を返しますtextContent

たとえば、次のステートメントはYahoo Groupshrefの HTML リンク (タグ)のみを抽出します。

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'

たとえば、次のステートメントは、 XPathaによって取得された各アンカー タグの textContent を返します。

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 Table at YQL Guide

于 2015-02-19T19:12:03.733 に答える