【问题标题】:What's correct syntax to SELECT statement in YQL results?YQL 结果中 SELECT 语句的正确语法是什么?
【发布时间】:2015-02-18 22:28:57
【问题描述】:

我正在使用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>

【问题讨论】:

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


    【解决方案1】:

    您可以在“Syntax of SELECT - Specifying the Elements Returned”(cached) 雅虎查询语言文档中查看。

    如果结果集中的字段包含子字段,您可以使用句点(点)作为分隔符来指示子字段。

    自定义表格

    例如,对于social.profile 表,从以下示例中仅获取image 字段的imageUrl 子字段:

    . . .
    <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 页面获取内容,您可以在单词 SELECT 之后指定 content 关键字。带有 content 关键字的语句按以下顺序处理 HTML:

    1. 它会在找到的元素中查找任何名为 content 的元素。
    2. 如果未找到名为 content 的元素,则该语句将查找名为 content 的属性。
    3. 如果既没有找到名为content 的元素也没有找到属性,则语句返回元素的textContent

    例如,以下语句仅提取 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多