SlothLibの使い方(WebSearch)

SlothLibの機能のうち、SlothLib.Web.Search名前空間の機能を利用する方法について解説します。この名前空間には、Yahoo検索、Google検索、Live Search、Flickr、Goo、YouTubeなどのAPIに対する共通インターフェースを提供しています。テキスト検索、Blog検索、画像検索、ビデオ検索などに分類できます。ここでは、Yahoo検索、Live Searchの2つを用いたテキスト検索について解説します。

SlothLib.Web.Search名前空間の参照

実践解説/入門を参考にして、dllを参照します。 ここでは、

を参照します。

ウェブ検索を行うプログラムの作成

コンポーネントの設置

まず、ツールボックスからlabel,textbox,comboBox, Button, ListvViewをフォームに貼り付けます。次にそれぞれのlabel,Buttonを図のテキストのように書き換えます。プロパティの"Text"の表示を書き換えます。

ListView1は検索結果を表示するのに用います。ComboBox1は検索エンジンの選択に用います。TextBox1は検索クエリの入力に用います。TextBox2は取得するURL数を指定するために用います(最大1000件)。Button1で検索を開始します。
ツールの配置.png

ListView の表示の設定

  1. 貼り付けたListViewを選択し、プロパティの項目 "View" を Detailed に変更し、項目 "Columns" の設定を行います。Columnsは、追加を3回押して3つ作成し、1つ目の Text に“Title”、2つ目の Text を“URL”、3つ目のTextを"Description"とします。
    リストビュー.png

ComboBoxの設定

検索エンジンの横のコンボボックスの"Items"の"Yahoo!","LiveSearch"を加えます。また、プロパティのTextに"Yahoo!"に書き換えます。
コンボボックスの設定.png

検索ボタンの実装

検索ボタンをダブルクリックし、"button1_Click"の関数の中に、コードを書き加えます。次にソースコードの例を示します。Web検索用のインターフェースを用いることによって、それぞれの検索結果を同じように処理することができます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SlothLib.Web.Search; // 追加
namespace WebTest
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void Form1_Load(object sender, EventArgs e)
       {
       }
       private void button1_Click(object sender, EventArgs e)
       {
           // Web検索用インターフェースのIWebSearchクラスを作成する
           IWebSearch search;
           // ComboBoxの内容によって、検索エンジンの選択を行う
           switch (comboBox1.Text)
           {
               // Yahoo!を検索エンジンとして選択する
               // Yahoo!用のApplication Keyを指定する
               case "Yahoo!":
                   search = new YahooJpWebSearch("slothlib");
                   break;
               // LiveSearchを選択する
               // LiveSearch用のApplication Keyを指定する
               case "LiveSearch":
                   search = new LiveWebSearch("2990056B93288A4723E323CAEA52B9E1931BAB03");
                   break;
           }
           // Web検索結果用インターフェースのIWebSearchResultクラスに検索結果を格納する
           IWebSearchResult result = search.DoSearch(textBox1.Text, Int32.Parse(textBox2.Text));
           // 検索数を表示する
           label4.Text = result.TotalNumber.ToString() + "件";
           // 以前の検索結果をクリアする
           listView1.Items.Clear();
           // 検索結果のから要素をひとつずつ取り出す
           foreach (IWebElement element in result.ResultElements)
           {
               // タイトルを書き込む
               ListViewItem item = new ListViewItem(element.Title);
               // URLを書き込む
               item.SubItems.Add(element.URL);
               // 詳細(スニペッド)を書き込む
               item.SubItems.Add(element.Description);
               // ListViewにアイテムを追加する
               listView1.Items.Add(item);
           }
       }
   }
}

実行例

クエリを"京都"、検索件数を50件、検索エンジンを"Yahoo!"としたときに、次のような結果となります。
検索結果.png