物欲購入目録日誌 写真館
スポンサーサイト
--.--.-- (--:--) スポンサー広告
Twitterでつぶやく
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
RubyでGoogle Suggest API を使って推薦語を取得する
2011.08.25 (23:17) 余談trackback(0)comment(0)
Twitterでつぶやく
Rubyを使ってGoogle Suggest APIからあるクエリを入力した際に出力される推薦語を取得するスクリプトを紹介してみます。Rubyを使って推薦語を取得するプログラムがちゃんと紹介されているページがなかったため。

ベースとなる記事は↓の記事なのですが、このままでは動かないので修正します。

http://randd.kwappa.net/2009/10/21/133

1つのプログラムにまとめてもいいのですが、以下の2つのRubyスクリプトで実行します。

(1) Google Suggest APIにクエリを投げて結果(xml)を取得する

(2) 結果のxmlをパーズする。

(3) 1,2を動かすシェルスクリプト

そでは以下サンプルコード


[1] suggest.rb (問い合わせ)
--
#! /usr/local/bin/ruby
# -*- coding: utf-8 -*-
#
# usage : suggest.rb <投入クエリ>
#
$KCODE="u"
# regquire
require 'net/http'
require 'cgi'
require 'kconv'

# 検索クエリ
word = ARGV[0]
http = Net::HTTP.new('www.google.co.jp', 80)
query = "/complete/search?output=toolbar&q=#{CGI::escape(word)}&hl=ja"
req = Net::HTTP::Get.new(query)
res = http.request(req)
# XMLを出力
puts res.body.toutf8 # utf-8にするのがみそ。
--

[2] parse_suggest.rb (xmlパーザー)
--
#! /usr/local/bin/ruby
# -*- coding: utf-8 -*-
#
$KCODE="u"
require 'rexml/document'

# google suggestが返却するXMLをparseして
# [もしかして]の単語の配列に保存する
def parse_suggestion xml
doc = REXML::Document.new xml
suggested_words = []
doc.get_elements('//toplevel/CompleteSuggestion').each do |e|
suggested_words << e.elements['suggestion'].attributes['data']
end
# 取得した配列を返却
return suggested_words
end # parse_suggestion

# ファイルを開いて出力
puts parse_suggestion(File.open('suggest.xml').read)
--

[3]suggest.sh (実行シェル)
--
#! /bin/sh
#
# suggest.sh <検索文字列>
#
# google suggest APIを叩いてXMLを取得
cmd="./suggest.rb"
${cmd} ${1} > suggest.xml

# XMLファイルをパーズ
cmd="./parse_suggest.rb"
${cmd}

# テンプファイルを削除
rm -rf ./suggest.xml
--
こんな感じ、実行すると

$./suggest.sh 'twitter'
twitter
twitter 検索
twitter 日本語
twitter クライアント
twitter ブロック
twitter 使い方
twitter bot
twitter api
twitter アプリ
とぃってr

$./suggest.sh 'mix'
mixi
mix
mixi 足跡
mixi 足あと
みぃ
ミッドタウン
ミッドランドスクエア
苗字
ミュゼ
ミュージックステーション


mixと入力するとgoogle suggestの優秀さがすごくよくわかりますよね。
prevhome next












トラックバックURL
→http://tachiphoto.blog61.fc2.com/tb.php/1445-f0abf6c3
home
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。