1

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

标准语法是:

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

哪个有效。

但是,当我尝试选择"/title"or"/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>
4

1 回答 1

1

您可以在“选择的语法 - 指定返回的元素”(缓存的)雅虎查询语言文档中进行检查。

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

自定义表格

例如,对于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在 word 之后指定关键字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'

例如,以下语句返回由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'

资料来源:提取 HTML -在 YQL 指南中使用 YQL 和开放数据表

于 2015-02-19T19:12:03.733 回答