我正在使用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>
答案 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:
content
的任何元素。content
的元素,则该语句将查找名为content
的属性。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