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按鈕…
喔、畫面下方出現了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。
JSON的右側輸入文字、就能得到這個命名的JSONP。沒有輸入、就是單存的JSON。
取得table的欄位
如果想要rss table的欄位類型,可以下desc rss指令。
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!
真強。超強的。
可惜的是現在還不是很完整常常會有問題。如果能正常服務會很便利。
從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以前的照片。
喔~抓到了。
其他
可以使用的資料介紹之外的還有地理情報、天氣情報,但是只有美國的資料,沒有其他的。
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 可以查。
現在還在實驗的階段,在將來會是蠻實用的功能。
留言列表