スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Ruby】Typhoeusを使ってWebAPIにアクセスしてみる

以前の記事で紹介させていただいたTyphoeusを使ってWebAPIにアクセスしてみました。

Typhoeusのインストール方法は
【Ruby】gemでTyphoeusを入れてみる
を参照してください

今回しようしたWebAPIは

Yahoo!JAPANで公開されている

ウェブ検索API
http://developer.yahoo.co.jp/webapi/search/websearch/v1/websearch.html

関連検索ワードAPI
http://developer.yahoo.co.jp/webapi/search/assistsearch/v1/webunitsearch.html

の2つを使うことにします。

こちらのAPIはアプリケーションIDというものが必要なので事前に登録をしておいてください。

今回はWebAPIから返ってきたXMLをRexmlというライブラリを使って解析するところまですすめていきたいと思います。

早速簡単なコードの例から…

require 'rubygems'
require 'typhoeus'
require 'typhoeus.rb'
require 'rexml/document'

class YahooSearch
    include Typhoeus
    remote_defaults :on_success => lambda{|response| return response.body},
                    :on_failure => lambda{|response| return response.code},
                    :base_uri   => "http://search.yahooapis.jp"
    define_remote_method :searchAssist, :path => '/AssistSearchService/V1/webunitSearch'
    define_remote_method :search, :path => '/WebSearchService/V1/webSearch'
end

assist = YahooSearch.searchAssist(:params => {:query => 'Ruby', :appid => 'あなたのappid'})
result = YahooSearch.search(:params => {:query => 'Ruby', :appid => 'あなたのappid'})

search_assist_xml = REXML::Document.new assist
puts "searchAssistヒット総数:" + search_assist_xml.elements['/ResultSet'].attributes['totalResultsAvailable']

puts "関連検索ワード一覧"
search_assist_xml.elements.each('/ResultSet/Result') do | item |
    puts item.text
end

search_result_xml = REXML::Document.new result
puts "searchヒット総数:" + search_result_xml.elements['/ResultSet'].attributes['totalResultsAvailable']

puts "検索一覧"
for i in 1..5 do
    puts '---------------------'
    puts 'Title -- ' + search_result_xml.elements["/ResultSet/Result[#{i}]/Title"].text
    puts 'Url -- ' + search_result_xml.elements["/ResultSet/Result[#{i}]/Url"].text
    puts '---------------------'
end

まずはYahooSearchクラスについて見て行きます。

include Typhoeus

の部分でTyphoeusを読み込んでいます。

関連検索APIをsearchAssistメソッドにひもづけています

検索APIをsearchメソッドにひもづけています

上記のようなクラスを作成するだけでもうWebAPIに対してリクエストできる準備はほぼ完了です

今回の例ではどちらのWebAPIに対しても"Ruby"という検索ワードを投げています。

関連検索ワード一覧は(デフォルトで)返ってくる10件をそのまま表示します。

検索結果一覧は1件目から5件のタイトルとUrlを出力します。

このスクリプトの出力は

searchAssistヒット総数:57
関連検索一覧
ruby 西川口
ruby 入門
ruby 熟
ruby インストール
ruby tuesday
ruby rose
ruby room
ruby lane
tasha ruby
ruby cafe
searchヒット総数:324000000
検索一覧
---------------------
Title -- オブジェクト指向スクリプト言語 Ruby
Url -- http://www.ruby-lang.org/ja/
---------------------
---------------------
Title -- ダウンロード
Url -- http://www.ruby-lang.org/ja/downloads/
---------------------
---------------------
Title -- Ruby - Wikipedia
Url -- http://ja.wikipedia.org/wiki/Ruby
---------------------
---------------------
Title -- Ruby
Url -- http://www.geocities.jp/taka_owl2005/job/UNIX/tool/ruby.html
---------------------
---------------------
Title -- Ruby on Rails
Url -- http://www.rubyonrails.org/
---------------------

となります。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Ruby  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。