2008年12月15日
美國yahoo推出了類似SQL讀取資料的API

美國Yahoo!推出了跟高自由度的Yahoo! Pipes有類似的服務。

命名為Yahoo! Query Language。簡稱是YQL 。

SQL風的語言來達到 REST,得到XML或是JSON的純文字資料。

沒有實在使用有點難懂,先用用看再說。

從RSS取得資料
要使用YQL可以從RSS當中取得最文章的標題。可以下這樣的YQL。

select title from rss
where url='http://d.hatena.ne.jp/nitoyon/rss'


可以直接對rss table下select。

要執行YQL可以用YQL提供的console。(※需要登入)

在console的左上角輸入YQL,看下TEST按鈕…
20081215034501.png

喔、畫面下方出現了XML的結果。

這個XML的URL是 http://query.yahooapis.com/v1/public/yql?q=select%20title%20from%20rss%20%0A%20%20where%20url%3D’http%3A%2F%2Fd.hatena.ne.jp%2Fnitoyon%2Frss’&format=xml。在中間上方The REST query欄位顯示。(需要在v1的後方手動加上public)

用JSON取得資料
在中間的點選JSON選項,可以得到JSON。
20081215034502.png

JSON的右側輸入文字、就能得到這個命名的JSONP。沒有輸入、就是單存的JSON。

取得table的欄位
如果想要rss table的欄位類型,可以下desc rss指令。
20081215034503.png

url 是key,能夠得到title, description, link, author, pubDate欄位。

不只是title url也能取得。

select title,link from rss
where url='http://d.hatena.ne.jp/nitoyon/rss'


URL 如下。

http://query.yahooapis.com/v1/public/yql?q=select%20title,link%20from%20rss%20%0A%20%20where%20url%3D’http%3A%2F%2Fd.hatena.ne.jp%2Fnitoyon%2Frss’&format=xml
按下之後,可以得到link的資料。URL 中的 title,link 改成 * 可以看到更多的欄位。

在html table XPath!!
在這裡感覺都感覺跟Yahoo! Pipes差不多,如果用html tableを能查詢任意的HTML。而且,可以用xpath當條件

舉例,想擷取Yahoo!NEWS的頭條。

select * from html
where
url="http://headlines.yahoo.co.jp/hl"
and
xpath="//li[@class='yjMt']/a"


從全部的 yjMt 類型下的 li tag中列出a tag。

結果,可以得到XML的a tag!
20081215034500.png

真強。超強的。

可惜的是現在還不是很完整常常會有問題。如果能正常服務會很便利。

從Flickr取得資料
還有Flickr也提供了很多的table

flickr.location *
flickr.photos.exif *
flickr.photos.info *
flickr.photos.interestingness *
flickr.photos.recent *
flickr.photos.search *
flickr.places *
簡單試看看,flickr.photo.search。

select * from flickr.photos.search
where
user_id='8078344@N06'
and
max_taken_date='2008-05-01'


從我上傳的Flickr照片中,搜尋2008-05-01以前的照片。
20081215034459.png

喔~抓到了。

其他
可以使用的資料介紹之外的還有地理情報、天氣情報,但是只有美國的資料,沒有其他的。

YQL不只是基本的select可以用,還好像可以支援複雜的子查詢句。在Console的範例中也有寫著 aggregate and filter multiple rss feed 。

select * from rss
where
url in (select title from atom where url="http://spreadsheets.google.com/feeds/list/pg_T0Mv3iBwIJoc82J1G8aQ/od6/public/basic")
and
description like "Wall Street"
LIMIT 10 | unique(field="title")


之外,像OAuth隱私的資料好像也能取得。

YQL的詳細在Yahoo! Query Language (YQL) Guide - YDN 可以查。

現在還在實驗的階段,在將來會是蠻實用的功能。



arrow
arrow
    全站熱搜

    abort 發表在 痞客邦 留言(0) 人氣()