Yahoo! WebサービスAPIサンプル(関連検索ワード)

概要


Yahoo!WebサービスAPI 関連検索ワードのサンプルです。

YahooのWebサービスAPIを利用するにはIDが必要です。以下のサイトからIDを取得することができます。
(Yahoo!IDを事前に取得していること。無料)
http://developer.yahoo.co.jp/search/webunit/V1/web...

サンプルページ


指定されたキーワードの関連検索ワードを表示します。さらに表示されたキーワードをクリックすることによりその関連検索ワードを検索します。
http://sakura-computer.co.jp/webservice/yahoo/assi...

参考文献・リンク



CGIライブラリのリファレンスマニュアル
REXMLについて(日本語リファレンスマニュアル)
RubyでCGI

ソースコード


#!/usr/local/bin/ruby

require "cgi"
require "open-uri"
require "rexml/document"
require "pp"

begin
  cgi = CGI.new('html4Tr')
  html = "検索できませんでした。"
  credit = "<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href='http://developer.yahoo.co.jp/about'><img src='http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif' title='Webサービス by Yahoo! JAPAN' alt='Web Services by Yahoo! JAPAN' width='125' height='17' border='0' style='margin:15px 15px 15px 15px'></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->"


  #キーワードが入力されているときのみ処理を行う。
  if cgi["query"] != "" then

    base = "/webservice/yahoo/assistsearch.rb"
    qstr = "http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch/V1/parse?appid=取得したAPPID"
    query = qstr + "&query=" + CGI.escape(cgi["query"])
    xml = REXML::Document.new(open(query))
    
    #検索結果を確認し、結果HTMLを作成する。
    if xml.elements["ResultSet"].attributes["totalResultsReturned"] != 0 then
      html = ""
      xml.elements.each("ResultSet/Result") { |result|
        result.text.split().each { |w|
          html += "<a href='" + base + "?query=" + CGI.escape(w) + "'>" + w + "</a> " 
        }
        html += "<br/>"
      }
    end
  end

  #ページの作成
  title = "Yahoo! " + cgi["query"]
  cgi.out do
    cgi.html do
      cgi.head { cgi.title { title } } + cgi.body do
        cgi.h3 { "Yahoo!検索 関連検索ワード WebサービスAPI サンプル" } + 
          "関連語句を検索したいキーワードを入力してボタンをクリックしてください。" +
          cgi.form do
          cgi.text_field("query", cgi["query"]) +
            cgi.br +
            cgi.submit
        end +
          cgi.h3 { "検索結果" } + html + cgi.br + credit
      end
    end
  end
  
#例外処理
rescue => ex
  print cgi.header
  puts '<pre>' + ex + '</pre>'
  puts '<pre>'
  pp ex.backtrace
  puts '</pre>'
  puts '<pre>'
  pp query
  puts '</pre>'
end
2008年02月21日(木) 22:40:33 Modified by y_tabira




スマートフォン版で見る