Google サジェストを使ってみる
30分プログラム、その735。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_259にインスパイアされて、Googleサジェストの候補をScalaで取得してます。
ScalaにはXMLリテラルがあって、パターンマッチもできるので楽ですね。属性をパターンマッチでとりだせなかったけれども。
使い方
scala> GoogleSuggest.search("hoge") res7: Seq[String] = ArrayBufferRO( 捕鯨, hogeとは, hogehoge, hogehoge 由来, 捕鯨問題, 捕鯨国 一覧, 捕鯨問題 まとめ, 捕鯨 反対 理由, hoゲージ, 保元の乱)
ソースコード
import java.net.URL import scala.xml._ object GoogleSuggest { def url(q : String) = String.format("http://google.com/complete/search?output=toolbar&hl=ja&q=%s", q) def load(url : String) = { val conn = new URL(url) val in = conn.openStream() XML load in } def extract(xml : Elem) = { xml match { case <toplevel>{ suggests @ _*}</toplevel> => suggests \\ "@data" } } def search(query : String) : Seq[String] = { val u = url( query ) val xml = load( u ) extract(xml).map(_.text) } }