YQL结果中SELECT语句的正确语法是什么?

时间:2015-02-18 22:28:58

标签: xml yql yahoo-api yahoo-boss-api

我正在使用boss.search表来提取XML中的数据,但我想检索特定的字段。

标准语法是:

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

有效。

但是当我尝试选择"/title""/results/result/title"等字段时,我遇到了语法错误:

  

查询语法错误[第1行:第7行期望fields_or_star获得'/ 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 个答案:

答案 0 :(得分:1)

您可以在&#39; Syntax of SELECT - Specifying the Elements Returned&#39; (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表中获取 title ,您需要将该字段命名为: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
  4. 例如,以下语句仅提取 Yahoo Groups 的HTML链接(href标记):

    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'
    

    例如,以下语句返回 XPath 表达式检索的每个锚a标记的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'
    

    资料来源:YQL指南中的Extracting HTML - Using YQL and Open Data Tables