Yahoo!検索Webサービス ウェブ検索のサンプルコード(C# )

Yahoo!検索Webサービスのウェブ検索機能を使って検索を行うサンプルです。なおこのサンプルを実行するには、xsd.exeにより「/c」オプションで作成されたクラスが必要です。このクラスを添付しておきます。

fileWebSearchResponse.cs 823件 [詳細]
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<%@ 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)
    {
        //URLを構築する
        string requestUrl =
            "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch";
        //アプリケーションIDを指定(必ず指定すること)
        requestUrl += "?appid=XXXXX";
        //検索クエリー。UTF-8エンコードする。
        requestUrl += "&query=" + Server.UrlEncode(TextBox1.Text);
        //検索の種類
        if (searchType.SelectedValue != "" && searchType.SelectedValue != "all")
            requestUrl += "&type=" + searchType.SelectedValue;
        //表示件数
        if (resultsCount.SelectedValue != "" && resultsCount.SelectedValue != "10")
            requestUrl += "&results=" + resultsCount.SelectedValue;
        //開始位置
        //requestUrl += "&start=" + "1";
        //検索するファイルの種類
        if (fileFormat.SelectedValue != "" && fileFormat.SelectedValue != "any")
            requestUrl += "&format=" + fileFormat.SelectedValue;
        //アダルトコンテンツを含める
        if (adultOk.Checked)
            requestUrl += "&adult_ok=1";
        //同じコンテンツを別の検索結果として表示する
        if (similarOk.Checked)
            requestUrl += "&similar_ok=1";
        //日本語のページのみ検索する(デフォルトでjaとあるのだが...)
        if (englishOnly.Checked)
            requestUrl += "&language=ja";
        //日本のサイトのみ検索する
        if (japanOnly.Checked)
            requestUrl += "&country=jp";
        //検索するドメインを指定する
        if (searchDomain.Text != "")
            requestUrl += "&site=" + Server.UrlEncode(searchDomain.Text);
 
        //HttpWebRequestの作成
        System.Net.HttpWebRequest request =
            (System.Net.HttpWebRequest)System.Net.WebRequest.Create(
            requestUrl);
        System.Net.HttpWebResponse response = null;
        Yahoo.jp.WebSearchResponse.ResultSet res;
        try
        {
            //レスポンスの取得
            response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream strm = response.GetResponseStream();
            //サーバーから返されたXMLデータを解析
            System.Xml.Serialization.XmlSerializer serializer =
                new System.Xml.Serialization.XmlSerializer(
                typeof(Yahoo.jp.WebSearchResponse.ResultSet));
            res = (Yahoo.jp.WebSearchResponse.ResultSet)
                serializer.Deserialize(strm);
        }
        catch (Exception ex)
        {
            Label1.Text = "エラー:" + Server.HtmlEncode(ex.Message);
            return;
        }
        finally
        {
            if (response != null)
                response.Close();
        }
 
        //結果を表示
        Label1.Text = "";
        if (res.totalResultsReturned == "0")
        {
            Label1.Text += "該当するページが見つかりませんでした。";
        }
        else
        {
            Label1.Text += "<b>" + Server.HtmlEncode(TextBox1.Text) +
                "</b> の検索結果 約 " +
                res.totalResultsAvailable + "件中 " +
                res.firstResultPosition + " - " +
                res.totalResultsReturned + " 件目<br />\n";
            //検索されたページを列挙
            if (res.Result != null)
            {
                Label1.Text += "<ul>\n";
                foreach (Yahoo.jp.WebSearchResponse.ResultType item in res.Result)
                {
                    //リンク
                    Label1.Text += "<li><a href=\"" + item.ClickUrl + "\">" +
                        item.Title + "</a>";
                    //要約
                    if (item.Summary != null && item.Summary.Length > 0)
                        Label1.Text += "<br />" + item.Summary;
                    //URL
                    Label1.Text += "<br /><small>" + item.Url;
                    //キャッシュ情報
                    if (item.Cache != null)
                    {
                        Label1.Text += " - " + item.Cache.Size + "byte";
                        Label1.Text += " - <a href=\"" + item.Cache.Url +
                            "\">キャッシュ</a>";
                    }
                    //更新日
                    if (item.ModificationDate != null &&
                        item.ModificationDate.Length > 0)
                    {
                        //UNIXタイムスタンプをDateTimeに変換
                        DateTime dt = new DateTime(1970, 1, 1);
                        dt = dt.AddSeconds(double.Parse(item.ModificationDate));
                        Label1.Text += " - " + dt.ToShortDateString();
                    }
                    //MIMEタイプ
                    if (item.MimeType != null &&
                        item.MimeType.Length > 0)
                        Label1.Text += " - " + item.MimeType;
                    Label1.Text += "</small>\n";
                }
                Label1.Text += "</ul>\n";
            }
        }
    }
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Yahoo!ウェブ検索Webサービスのサンプル</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:CheckBoxList ID="searchType" runat="server"
         RepeatDirection="Horizontal"
            RepeatLayout="Flow">
            <asp:ListItem Selected="True" Value="all">すべて含む</asp:ListItem>
            <asp:ListItem Value="any">少なくとも1つ含む</asp:ListItem>
            <asp:ListItem Value="phrase">文章として含む</asp:ListItem>
        </asp:CheckBoxList><br />
        表示件数 :
        <asp:DropDownList ID="resultsCount" runat="server">
            <asp:ListItem Value="10">10件</asp:ListItem>
            <asp:ListItem Value="25">25件</asp:ListItem>
            <asp:ListItem Value="50">50件</asp:ListItem>
        </asp:DropDownList><br />
        ファイル形式 :
        <asp:DropDownList ID="fileFormat" runat="server">
            <asp:ListItem Value="any">すべてのファイル形式</asp:ListItem>
            <asp:ListItem Value="html">HTML (.htm, .html)</asp:ListItem>
            <asp:ListItem Value="pdf">Adobe PDF (.pdf)</asp:ListItem>
            <asp:ListItem Value="xls">Microsoft Excel (.xls)</asp:ListItem>
            <asp:ListItem Value="ppd">Microsoft Power Point (.ppd)</asp:ListItem>
            <asp:ListItem Value="msword">Microsoft Word (.doc)</asp:ListItem>
            <asp:ListItem Value="rss">RSS/XML (.xml)</asp:ListItem>
            <asp:ListItem Value="txt">テキストフォーマット (.txt)</asp:ListItem>
        </asp:DropDownList><br />
        <asp:CheckBox ID="adultOk" runat="server"
         Text="アダルトコンテンツを含める" /><br />
        <asp:CheckBox ID="similarOk" runat="server"
         Text="類似の結果を含める" /><br />
        <asp:CheckBox ID="englishOnly" runat="server"
         Text="日本語のページのみ" /><br />
        <asp:CheckBox ID="japanOnly" runat="server"
         Text="日本にあるウェブサイトのみ" /><br />
        ドメイン :
        <asp:TextBox ID="searchDomain" runat="server">
        </asp:TextBox><br />
        <br />
        <asp:Label ID="Label1" runat="server" EnableViewState="False">
        </asp:Label>
        </div>
    </form>
    
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス by Yahoo! JAPAN</a>
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>

ページ情報
  • 作成日 : 2006-09-09 (土) 02:56:50
  • 作成者 : DOBON!
  • 最終編集日 : 2006-09-09 (土) 03:05:59
  • 最終編集者 : DOBON!
[ トップ ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]