• 締切済み

WebAPIのマッシュアップ方法について[Webサービスの作り方]

マッシュアップというものをやりたいと思っています。 例えばAPIはYahooデベロッパー http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html のものを使うとして、 リクエストURL http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch にリクエストパラメータを付加すると(サンプルコードです) http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch? appid=YahooDemo&query=%e6%b2%96%e7%b8%84&results=2 とするとこうなるということですが、 質問(1)まずquery=%e6%b2%96%e7%b8%84 という検索クエリーというものがよく分かりません。どう決めればよいのでしょうか? 質問(2)データベースについての知識はないのですが、もし必要ならどのような知識がどんなところに必要でしょうか?(例で示して下さると助かります) 質問(3)そして、このアドレスにアクセスするとXML形式で結果が返ってきますよね。これをどう使っていくのかいまいちよく分かりません。解説サイトを探してみたりもしましたが、抽象的で過程を省いているものが多く (1:○○する、2:○○する・・・と細かく説明されていればいいのですが・・)質問するに至りました。 関係ありそうな技術の現時点での到達度を書いておきます。 PHP、Perlなど:一から javascript:少しかじりました html:一通りはできます xml:一から HTTP関係:GET命令などで必要な情報をサーバからクライアントに持ってくるなどの簡単な知識。実際のやり方は一から 足りない部分は必要に応じて覚えていきたいと思っています、まずは簡単なものを一つ作りながら・・・と。どうぞよろしくお願いいたします。

みんなの回答

回答No.1

こんにちは。 APIを使う時はその仕様に合わせて自分でプログラミングします。 質問(1) 検索クエリとは、検索したい用語(文字列)の事です。例えばgooを検索する場合は、query=gooです。英語の場合はこれで良いのですが、日本語の場合は文字コード(SJISやEUC-JP、UTF-8等)が何種類かあるのでそれを限定する事で文字化けが避けられます。仕様のところに(UTF-8エンコードされた)と書いてありますので、UTF-8でこの文字を送信する必要があります。日本語の『沖縄』と言う文字をUTF-8でエンコードすれば%e6%b2%96%e7%b8%84というへんてこな文字になります。 質問(2) データベースに関する知識は通常は必要ありません。 APIでもらってきたデータを独自にデータベースに保存してから検索する、と言うような使い方は出来ますが、そもそもAPIというのは既存のデータベースをAPIという決まり事を使って利用出来るようにするしくみですので、必要としないです。 質問(3) Yahooではほとんどの場合XMLで回答が返ってきますが、他のAPIでは別の形式を指定する事も出来ます。 XMLで返ってきた物の中からあなたが必要とすべき情報を取り出し、さらに別のAPIヘリクエストする、と言うような使いかたをするわけです。 今回の場合、沖縄、というキーワードで検索した場合に、関連キーワードとして沖縄 ホテル、沖縄 観光、という新しいキーワードが出てきたわけです。この情報をもとにどのように使っても構いません。 > これをどう使っていくのかいまいちよく分かりません。 あなたが決める事です。例えば、gooの急上昇キーワードのRSSを取得し、そのキーワードの関連キーワードを探す、と言う時にこのようなAPIが利用出来ます。

ee271828
質問者

補足

回答ありがとうございます! 質問(1)なるほど、決められた文字コードに直したために呪文のような文字列になっていたのですね。解決です! 質問(2)使おうと思えば使えるけれど、必須ではないのですね。解決です! 質問(3)すみません。質問の仕方が曖昧でした、例えばtaketan_mydns_jpさんが挙げて下さった例:gooの急上昇キーワードのRSSを取得し、そのキーワードの関連キーワードを探す。といったことをする場合に実際に何を準備し、何を行えばいいのか、という点が疑問となっていました。その詳細について教えていただけたら幸いです

関連するQ&A

  • YAHOO ウェブ検索Web APIを使ったプログラム

    perlのペーペープログラマーです とりあえず動けばOK的にしか作れないレベルです 現在YAHOO ウェブ検索Web APIを使ったプログラムを作成しています (プログラム、フォーム用、結果表示用のHTMLなどもutf-8で記述) 大体普通に動くのですが一部キーワードを使うとなぜか違う検索結果が返ってきます 例:SEOツール 1.返ってくるべきページ http://search.yahoo.co.jp/search?p=SEO%E3%83%84%E3%83%BC%E3%83%AB 2.なぜか受け取るページ http://search.yahoo.co.jp/search?p=SEO%83c%81[%83%8B なぜか2のshift-jisっぽいものが返ってきます 他のキーワードなどでは普通のUTF-8のページが返ってきます 文字化けなどはほとんどありません 正直まったく原因が分かりません いったい何をどうすれば良いのでしょうか? ソースは下記みたいな感じです &decode; #デコードサブルーチン use LWP::Simple; use XML::Simple; $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$in{'keyword'}"; $response = get($url); $xml = new XML::Simple; $yahoo_xml = $xml->XMLin($response); $tra = $yahoo_xml->{totalResultsAvailable}; $page = <<"EOF"; $tra EOF &page; #ページ表示サブルーチン $pageを表示 ちなみに文字化けは他プログラムでは発生していましたが解決しました 関連性があるのでしょうか? 問題 APIから帰ってきたものを@lineに入れてHTML表示 それ以外の変数文字列が文字化け 解決策 APIから返ってきたものをforeachでutf-8にデコードしたら他のものが普通に表示されました。 foreach (@line) {Jcode::convert($_, "utf8");} こんな感じです これは返ってきたものなので、そもそも返って来るものが違う場合もうお手上げです。 何がなにやら分かりません 上手に説明できませんでしたが、よろしくお願いいたします また教えてgooへの投稿に慣れていないもので至らない点あるかと思いますがご容赦ください

    • ベストアンサー
    • Perl
  • JavaScriptでwebAPIを呼び出す方法

    JavaScriptを使ってテキスト解析を行うプログラムを実装したいと思っています。 yahooの日本語形態素解析APIを利用しようと思っているのですが、APIの呼び出し方が分かりません。 JavaScriptでwebAPIを呼び出す方法を教えてください。 また、詳しい使い方やサンプルコードなどをご存知の方がいらっしゃいましたらご教授願いたいです。 よろしくお願いします。 yahoo日本語形態素解析API http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html

  • Yahoo APIのXMLの取得について

    Yahoo APIのXMLで総数(totalResultsAvailable)を取得したいのですが、取得できません。 $url = "http://api.search.yahoo.co.jp/WebSearchService/xx/webSearch?appid=xxxxx&query=$query"; $xml= simplexml_load_file($url); $yahooxml=$xml->Result->Item ; $totalResults = $yahooxml->{totalResultsAvailable}; print_r ($totalResults); $urlは問題なく値が入ってるのですが、$totalResults ではSimpleXMLElement Object ( ) と返ってきてしまいます。どうすれば、$totalResults の値を取得できるのでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのプログラムで質問です。

    PHPのプログラムで質問です。 yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? <?php * http://e.developer.yahoo.co.jp/webservices/register_application */ $appid = '<dj0zaiZpPVZFUU5lWnQxM3dSSCZzPWNvbnN1bWVyc2VjcmV0Jng9ZTY->'; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid=${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que->{'Url'}}</a>\n"); } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

    • ベストアンサー
    • PHP
  • PHPのプログラムで質問です。

    yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? これで解答いただいてアプリケーションIDを入れて実行したらエラーが出たためもう一度質問です。 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/lampp/htdocs/www/sample3.php on line 28 エラーはこのようなエラーです。 よろしくお願いします。 <?php /** * Yahoo! JAPAN Web APIのご利用には、アプリケーションIDの登録が必要です。 * あなたが登録したアプリケーションIDを $appid に設定してお使いください。 * アプリケーションIDの登録URLは、こちらです↓ * http://e.developer.yahoo.co.jp/webservices/regis … */ $appid = ''; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET ['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; if("" !== $_GET['query']){ $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http:// ${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid= ${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que-> {'Url'}}</a>\n"); } } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17 … width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

    • ベストアンサー
    • PHP
  • javaプログラミング

    javaとYahooのWebサービスを利用して、検索結果のxmlを取り出し、 ○○.xmlという引数を与えて、結果を書き出そうとしていますが、 以下のプログラムだと文字(日本語)が化けてしまいます。 どうにかして文字化けせず取り出すことはできないでしょうか。 よろしくおねがいします。 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.InputStream; import java.net.URL; public class YahooWebServiceExample { public static void main(String[] args) { String request = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch? appid=web_research&query=%e6%b2%96%e7%b8%84&results=2"; try { // ファイル出力ストリームを取得(第二引数) BufferedWriter bw = new BufferedWriter(new FileWriter(args[0])); URL url = new URL(request); InputStream in = url.openStream(); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { for (int i = 0; i < len; i++) { System.out.print((char) buf[i]); bw.write(buf[i]); } } in.close(); bw.close(); } catch (Exception e) { System.out.println("Web services request failed"); } } }

    • ベストアンサー
    • Java
  • 各種APIを使ってwebサービスを作りたいと考えています。

    こんにちわ。 はてなやgoogle,yahoo等のAPIを使ってマッシュアップをしてみたいと考えています。 そこで色々調べてみたのですが、マッシュアップの際に必要となる技術としては ・Ajax ・java(Axis) ・.NET ・Perl があるようです。 当方、JAVAの経験はありますが、後は勉強ということになると思います。 その際、どの技術を習得しようか悩んでいます。 そこで参考までに、以下についてご意見をいただけますでしょうか? 1今はAjaxを用いた開発がメジャーのようですが、Ajaxを使うメリットがあれば教えて下さい。 2java(Axis)でwebサービスの構築は可能でしょうか? 3これから技術を習得するにあたって、まずこれから始めるのが初心者向け、というご意見があったらご教授ください。 初心者の質問で、要領を得ない部分もあるかもしれませんが、 どうぞよろしくお願いいたします。

  • APIを利用する場合のリクエスト数とは?

    $URL="APIのURL"; $use_xml_search=simplexml_load_file($URL); $ImgCode = $use_xml_search->Articles->Article->ImageCode; //画像コード取得 $ImgCount = $use_xml_search->Articles->Article->ImageCount; //画像数 上記のような感じでAPIを利用しております。 よくあるリクエスト数制限でいう「リクエスト数」とは2行目の「1回」でしょうか? それとも3.4行目の「2回」になるのでしょうか?

    • ベストアンサー
    • PHP
  • Amazon WebサービスのリクエストURL表示

    恐縮ながら質問させて頂きます。PHP初心者です。 タイトルの通りですが、下記のリンクを参考に、 最終的にブラウザで開いた際に、Amazonから指定したワードの検索結果がHTMLコードの画像付き(よくブログ等であるAmazonへの商品画像つきのリンク)で表示するようにしようと試行錯誤しています。 またその検索結果を短縮URLでTwitterへ自動投稿しようと設定しています。 AmazonのAPIから商品情報を10件以上得る為のTips http://main.mints.ne.jp/blog/2012/02/14/amazon%E3%81%8B%E3%82%89%E5%95%86%E5%93%81%E6%83%85%E5%A0%B1%E3%82%92%EF%BC%91%EF%BC%90%E4%BB%B6%E4%BB%A5%E4%B8%8A%E5%BE%97%E3%82%8B%E7%82%BA%E3%81%AEtips/ amazon API (AWS) を試す PHP http://techlog.knocking.co.jp/archives/467 しかし、上記の二番目のリンクのようにPHPを書き、Amazon Web サービス リクエストURLを取得することには成功したのですが、それからどうしていいのか分からずに困っています。 現状ではローカルのXMAPPを用いて、作成したamazon.php というファイルにアクセスすると、 「 http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=○○◯◯←設定したアクセスキー、シークレットキーやパラメータの数値 」というリクエストURLが表示され、そのURLをブラウザのアドレスバーに入れると、 「この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。 」という文字の下に -<ItemSearchResponse> -<OperationRequest> -<HTTPHeaders> : : というツリーが表示されます。 これからどうしていいのか分かりません。 これをHTMLでブラウザにAmazonへの商品画像つきのリンクとして表示するにはどうしたらいいのでしょうか? また、Twitterへcronを通じて自動投稿するbotも作成できたのですが、ツイートする内容を書くdata.txtの編集において、どうすればAmazon Webサービスで自動検索して抽出されたURLを自動的に変換してくれるのか分からずに困っています。 これらのAmazon WebサービスでのリクエストURLと、Twitterへの自動投稿bot作成が、平行して断片的に完結してしまって、どうすれば繋がるのか悩んでいます。 ・Amazon WebサービスでのリクエストURLをブラウザで画像表示するにはどうすればいいのか? ・そのリクエストURLの複数の検索結果をどうすればbotのdata.txtに転送してくれるのか? 抽象的で稚拙な質問で誠に申し訳ございませんが、ご存じの方がいらっしゃいましたら、1点目だけでも2点目だけでも、解決方法を御教授頂けたら幸いに存じ上げます。

    • ベストアンサー
    • PHP
  • メール本文の情報をAPIで受ける方法

    こんにちは。 メールの本文に書いた文字を、APIで受け取りその結果をメール返信するシステムを作りたいと思っています。 こういうことができるのかどうか・そしてできるとすれば、どのようにすればできるのか教えていただきたいです。 例えば、Yahoo!地図のAPI・ローカルサーチを使い、メールの本文に書かれた地名の周辺のお店情報をメール返信する、といったものです。 http://developer.yahoo.co.jp/webapi/map/ よろしくお願いします。

専門家に質問してみよう