DoboWiki
Top
>
自由区
>
Webサービス紹介
>
Google SOAP Search API
> Web検索機能のサンプル(C#)
自由区/Webサービス紹介/Google SOAP Search API/Web検索機能のサンプル(C#) の編集
*Google SOAP Search API - Web検索機能のサンプル(C#) [#e269efca] #contents **コード [#z9ffe333] Wsdl.exe(Webサービス記述言語ツール)などでWebサービスプロキシクラスを作成しているものとします(名前空間名は"Google")。 テキストボックスに入力されたキーワードをGoogleで検索し、結果を10件表示します。 #code(csharp){{ <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { //キーを指定。必ず変更すること。 string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; //結果の開始インデックス int startIndex = 0; //取得する結果の最大値 int maxResults = 10; //検索の対象にする言語 string lr = ""; if (langJapanese.Checked) lr = "lang_ja"; //国などを指定 string restricts = ""; if (countryJapan.Checked) restricts = "countryJP"; //入力、出力文字コード。現在は指定不可。 string inputEncoding = ""; string outputEncoding = ""; //プロキシクラスのインスタンスを作成 Google.GoogleSearchService gs = new Google.GoogleSearchService(); Google.GoogleSearchResult res = null; try { //検索する res = gs.doGoogleSearch( key, TextBox1.Text, startIndex, maxResults, autoFiltering.Checked, restricts, safeSearch.Checked, lr, inputEncoding, outputEncoding); } catch (System.Web.Services.Protocols.SoapException ex) { Label1.Text = "エラー:" + Server.HtmlEncode(ex.Message); return; } if (res == null) { Label1.Text = "エラー:結果を取得できませんでした。"; return; } //結果表示 Label1.Text = ""; Label1.Text += "<b>" + Server.HtmlEncode(res.searchQuery) + "</b> の検索結果 約 " + res.estimatedTotalResultsCount.ToString() + "件中 " + res.startIndex.ToString() + " - " + res.endIndex.ToString() + " 件目 (" + res.searchTime.ToString() + " 秒)<br />"; //コメントがあるときは表示 if (res.searchComments != null && res.searchComments.Length > 0) Label1.Text += "<br />" + res.searchComments + "<br />"; //Tipsがあるときは表示 if (res.searchTips != null && res.searchTips.Length > 0) Label1.Text += "<br />" + res.searchTips + "<br />"; //カテゴリがあるときは表示 if (res.directoryCategories != null && res.directoryCategories.Length > 0) { Label1.Text += "<br /><b>カテゴリ:</b><br />"; Label1.Text += "<ul>"; foreach (Google.DirectoryCategory categories in res.directoryCategories) { Label1.Text += "<li>" + categories.fullViewableName; } Label1.Text += "</ul>"; Label1.Text += "<br />"; } //ヒットした検索結果 if (res.resultElements != null && res.resultElements.Length > 0) { Label1.Text += "<ul>"; foreach (Google.ResultElement element in res.resultElements) { //タイトルの表示(リンク付き) Label1.Text += "<li><a href=\"" + element.URL + "\">"; if (element.title != null && element.title.Length > 0) Label1.Text += element.title; else Label1.Text += element.URL; Label1.Text += "</a>"; //ヒットした箇所の周辺を表示 if (element.snippet != null && element.snippet.Length > 0) Label1.Text += "<br />" + element.snippet; Label1.Text += "<br /><small>" + element.URL; //キャッシュのサイズを表示 Label1.Text += " - " + element.cachedSize; //関連ページの有無を表示 if (element.relatedInformationPresent) Label1.Text += " - 関連ページあり"; Label1.Text += "</small>\n"; } Label1.Text += "</ul>"; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Google SOAP Search APIのサンプル</title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="検索開始" /><br /> <asp:CheckBox ID="autoFiltering" runat="server" Text="類似の結果を隠す" /><br /> <asp:CheckBox ID="langJapanese" runat="server" Text="日本語のページのみ検索する" /><br /> <asp:CheckBox ID="countryJapan" runat="server" Text="日本のサイトのみ検索する" /><br /> <asp:CheckBox ID="safeSearch" runat="server" Text="アダルトコンテンツを除外する" /><br /> <br /> <asp:Label ID="Label1" runat="server" EnableViewState="False"> </asp:Label></div> </form> </body> </html> }} **解説 [#h7f02450] ***GoogleSearchService.doGoogleSearchメソッド [#z58fd984] GoogleSearchService.doGoogleSearchメソッドで検索します。doGoogleSearchメソッドの構文は次の通りです。 #pre{{ public GoogleSearchResult doGoogleSearch( string key, string q, int start, int maxResults, bool filter, string restrict, bool safeSearch, string lr, string ie, string oe ) }} パラメータ |名前 |型 |説明 |h |key |string |Googleから与えられた、Webサービスを使用するために必要なキー。| |q |string |検索する語句(クエリー)。| |start |int |取得する結果の開始インデックス番号。0から始まる。| |maxResults |int |取得する結果の最大数。10以下とする。| |filter |bool |類似した結果や、同じWebホストの結果を隠すかどうか。| |restrict |string |国(トップレベルドメイン名と、IPアドレスの地理的位置を考慮して判断される)などを指定する。日本ならば、"countryJP"。| |safeSearch |bool |アダルトコンテンツを除外するか。| |lr |string |検索の対象にする言語を指定する。日本語ならば、"lang_ja"。| |ie |string |入力文字コードを指定する。ただし、現在は無視され、必ずUTF-8となる。| |oe |string |出力文字コードを指定する。ただし、現在は無視され、必ずUTF-8となる。| ***GoogleSearchResultクラス [#f799cb3e] doGoogleSearchメソッドは、GoogleSearchResultオブジェクトを返します。GoogleSearchResultクラスのプロパティは、次のようなものです。 |名前 |型 |説明 |h |documentFiltering |bool |フィルタリング(類似した、あるいは同一Webホストの結果を隠す)されたか。| |searchComments |string |「"???"は使用されませんでした。」のようなコメント。| |estimatedTotalResultsCount |int |ヒットした結果のおおよその総数。| |estimateIsExact |bool |estimatedTotalResultsCountが正確な値かどうか。| |resultElements |ResultElement[]|結果が格納された配列。| |searchQuery |string |GoogleSearchServiceのq。| |startIndex |int |検索結果で取得した始めの位置。1がはじめ。| |endIndex |int |検索結果で取得した最後の位置。| |searchTips |string |Googleの使い方のヒント。多分「もしかして:???」や「ヒント:日本語 の結果のみを検索」だと思われる。| |directoryCategories |DirectoryCategory[]|該当するODPディレクトリのカテゴリの配列。| |searchTime |double |検索にかかった時間(秒)。| ***ResultElementクラス [#sb16a27d] 検索の結果は、GoogleSearchResult.resultElementsに格納されます。これは、ResultElementクラスの配列です。ResultElementクラスのプロパティは、次の通りです。 |名前 |型 |説明 |h |summary |string |結果がODPディレクトリにある場合、ODPディレクトリの概要が格納される。| |URL |string |結果のURL。| |snippet |string |結果のページ内でヒットした部分の周囲の文。ヒットした部分は<B>タグで括られる。| |title |string |結果のタイトル。ヒットした部分があれば<B>タグで括られる。| |cachedSize |string |キャッシュのサイズ。"100k"のような文字列となる。| |relatedInformationPresent|string|「関連ページ」があるかどうか。| |hostName |string |同一ホストの結果がフィルタリングされた場合、2番目の結果にホスト名が格納される。| |directoryCategory|DirectoryCategory|結果がODPディレクトリにある場合、そのカテゴリ情報。| |directoryTitle|string |結果がODPディレクトリにある場合、ディレクトリでのタイトル。| ***DirectoryCategoryクラス [#vf65c88d] DirectoryCategoryクラスのプロパティは次の通りです。 |名前 |型 |説明 |h |fullViewableName |string |ODPカテゴリのODPディレクトリ名。| |specialEncoding |string |ディレクトリ情報のエンコーディングスキームを指定する。| //これより下は編集しないでください #pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2006-08-25 (金) 00:51:59,DOBON!,2006-08-25 (金) 00:51:59,DOBON!)
タイムスタンプを変更しない
*Google SOAP Search API - Web検索機能のサンプル(C#) [#e269efca] #contents **コード [#z9ffe333] Wsdl.exe(Webサービス記述言語ツール)などでWebサービスプロキシクラスを作成しているものとします(名前空間名は"Google")。 テキストボックスに入力されたキーワードをGoogleで検索し、結果を10件表示します。 #code(csharp){{ <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { //キーを指定。必ず変更すること。 string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; //結果の開始インデックス int startIndex = 0; //取得する結果の最大値 int maxResults = 10; //検索の対象にする言語 string lr = ""; if (langJapanese.Checked) lr = "lang_ja"; //国などを指定 string restricts = ""; if (countryJapan.Checked) restricts = "countryJP"; //入力、出力文字コード。現在は指定不可。 string inputEncoding = ""; string outputEncoding = ""; //プロキシクラスのインスタンスを作成 Google.GoogleSearchService gs = new Google.GoogleSearchService(); Google.GoogleSearchResult res = null; try { //検索する res = gs.doGoogleSearch( key, TextBox1.Text, startIndex, maxResults, autoFiltering.Checked, restricts, safeSearch.Checked, lr, inputEncoding, outputEncoding); } catch (System.Web.Services.Protocols.SoapException ex) { Label1.Text = "エラー:" + Server.HtmlEncode(ex.Message); return; } if (res == null) { Label1.Text = "エラー:結果を取得できませんでした。"; return; } //結果表示 Label1.Text = ""; Label1.Text += "<b>" + Server.HtmlEncode(res.searchQuery) + "</b> の検索結果 約 " + res.estimatedTotalResultsCount.ToString() + "件中 " + res.startIndex.ToString() + " - " + res.endIndex.ToString() + " 件目 (" + res.searchTime.ToString() + " 秒)<br />"; //コメントがあるときは表示 if (res.searchComments != null && res.searchComments.Length > 0) Label1.Text += "<br />" + res.searchComments + "<br />"; //Tipsがあるときは表示 if (res.searchTips != null && res.searchTips.Length > 0) Label1.Text += "<br />" + res.searchTips + "<br />"; //カテゴリがあるときは表示 if (res.directoryCategories != null && res.directoryCategories.Length > 0) { Label1.Text += "<br /><b>カテゴリ:</b><br />"; Label1.Text += "<ul>"; foreach (Google.DirectoryCategory categories in res.directoryCategories) { Label1.Text += "<li>" + categories.fullViewableName; } Label1.Text += "</ul>"; Label1.Text += "<br />"; } //ヒットした検索結果 if (res.resultElements != null && res.resultElements.Length > 0) { Label1.Text += "<ul>"; foreach (Google.ResultElement element in res.resultElements) { //タイトルの表示(リンク付き) Label1.Text += "<li><a href=\"" + element.URL + "\">"; if (element.title != null && element.title.Length > 0) Label1.Text += element.title; else Label1.Text += element.URL; Label1.Text += "</a>"; //ヒットした箇所の周辺を表示 if (element.snippet != null && element.snippet.Length > 0) Label1.Text += "<br />" + element.snippet; Label1.Text += "<br /><small>" + element.URL; //キャッシュのサイズを表示 Label1.Text += " - " + element.cachedSize; //関連ページの有無を表示 if (element.relatedInformationPresent) Label1.Text += " - 関連ページあり"; Label1.Text += "</small>\n"; } Label1.Text += "</ul>"; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Google SOAP Search APIのサンプル</title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="検索開始" /><br /> <asp:CheckBox ID="autoFiltering" runat="server" Text="類似の結果を隠す" /><br /> <asp:CheckBox ID="langJapanese" runat="server" Text="日本語のページのみ検索する" /><br /> <asp:CheckBox ID="countryJapan" runat="server" Text="日本のサイトのみ検索する" /><br /> <asp:CheckBox ID="safeSearch" runat="server" Text="アダルトコンテンツを除外する" /><br /> <br /> <asp:Label ID="Label1" runat="server" EnableViewState="False"> </asp:Label></div> </form> </body> </html> }} **解説 [#h7f02450] ***GoogleSearchService.doGoogleSearchメソッド [#z58fd984] GoogleSearchService.doGoogleSearchメソッドで検索します。doGoogleSearchメソッドの構文は次の通りです。 #pre{{ public GoogleSearchResult doGoogleSearch( string key, string q, int start, int maxResults, bool filter, string restrict, bool safeSearch, string lr, string ie, string oe ) }} パラメータ |名前 |型 |説明 |h |key |string |Googleから与えられた、Webサービスを使用するために必要なキー。| |q |string |検索する語句(クエリー)。| |start |int |取得する結果の開始インデックス番号。0から始まる。| |maxResults |int |取得する結果の最大数。10以下とする。| |filter |bool |類似した結果や、同じWebホストの結果を隠すかどうか。| |restrict |string |国(トップレベルドメイン名と、IPアドレスの地理的位置を考慮して判断される)などを指定する。日本ならば、"countryJP"。| |safeSearch |bool |アダルトコンテンツを除外するか。| |lr |string |検索の対象にする言語を指定する。日本語ならば、"lang_ja"。| |ie |string |入力文字コードを指定する。ただし、現在は無視され、必ずUTF-8となる。| |oe |string |出力文字コードを指定する。ただし、現在は無視され、必ずUTF-8となる。| ***GoogleSearchResultクラス [#f799cb3e] doGoogleSearchメソッドは、GoogleSearchResultオブジェクトを返します。GoogleSearchResultクラスのプロパティは、次のようなものです。 |名前 |型 |説明 |h |documentFiltering |bool |フィルタリング(類似した、あるいは同一Webホストの結果を隠す)されたか。| |searchComments |string |「"???"は使用されませんでした。」のようなコメント。| |estimatedTotalResultsCount |int |ヒットした結果のおおよその総数。| |estimateIsExact |bool |estimatedTotalResultsCountが正確な値かどうか。| |resultElements |ResultElement[]|結果が格納された配列。| |searchQuery |string |GoogleSearchServiceのq。| |startIndex |int |検索結果で取得した始めの位置。1がはじめ。| |endIndex |int |検索結果で取得した最後の位置。| |searchTips |string |Googleの使い方のヒント。多分「もしかして:???」や「ヒント:日本語 の結果のみを検索」だと思われる。| |directoryCategories |DirectoryCategory[]|該当するODPディレクトリのカテゴリの配列。| |searchTime |double |検索にかかった時間(秒)。| ***ResultElementクラス [#sb16a27d] 検索の結果は、GoogleSearchResult.resultElementsに格納されます。これは、ResultElementクラスの配列です。ResultElementクラスのプロパティは、次の通りです。 |名前 |型 |説明 |h |summary |string |結果がODPディレクトリにある場合、ODPディレクトリの概要が格納される。| |URL |string |結果のURL。| |snippet |string |結果のページ内でヒットした部分の周囲の文。ヒットした部分は<B>タグで括られる。| |title |string |結果のタイトル。ヒットした部分があれば<B>タグで括られる。| |cachedSize |string |キャッシュのサイズ。"100k"のような文字列となる。| |relatedInformationPresent|string|「関連ページ」があるかどうか。| |hostName |string |同一ホストの結果がフィルタリングされた場合、2番目の結果にホスト名が格納される。| |directoryCategory|DirectoryCategory|結果がODPディレクトリにある場合、そのカテゴリ情報。| |directoryTitle|string |結果がODPディレクトリにある場合、ディレクトリでのタイトル。| ***DirectoryCategoryクラス [#vf65c88d] DirectoryCategoryクラスのプロパティは次の通りです。 |名前 |型 |説明 |h |fullViewableName |string |ODPカテゴリのODPディレクトリ名。| |specialEncoding |string |ディレクトリ情報のエンコーディングスキームを指定する。| //これより下は編集しないでください #pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2006-08-25 (金) 00:51:59,DOBON!,2006-08-25 (金) 00:51:59,DOBON!)
テキスト整形のルールを表示する
▲
▼
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
複製
|
名前変更
|
リロード
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]