C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 検索エンジンでの検索件数を取得したい


(過去ログ 63 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■36247 / inTopicNo.1)  検索エンジンでの検索件数を取得したい
  
□投稿者/ じろうくん (1回)-(2009/05/26(Tue) 11:06:43)

分類:[C#] 

YahooやGoogleでキーワードを入力して、検索される件数を取得したいのですが、可能ですか?
可能ならどんなクラスを使用すればできるでしょうか?
お願いします。
引用返信 編集キー/
■36248 / inTopicNo.2)  Re[1]: 検索エンジンでの検索件数を取得したい
□投稿者/ ぱぱいやん (32回)-(2009/05/26(Tue) 11:10:00)
ぱぱいやん さんの Web サイト
No36247 (じろうくん さん) に返信
> YahooやGoogleでキーワードを入力して、検索される件数を取得したいのですが、可能ですか?

可能です。

> 可能ならどんなクラスを使用すればできるでしょうか?

実際にやったことがないので詳しくは説明できないのですが、Yahoo や Google でそういった API を提供していないかどうかを確認してみて、もし駄目なら、自分で http を通してリクエストを投げて、帰ってきた html から該当部分を取得するというやり方になるんじゃないかと思います。
引用返信 編集キー/
■36251 / inTopicNo.3)  Re[1]: 検索エンジンでの検索件数を取得したい
□投稿者/ 魔界の仮面弁士 (1082回)-(2009/05/26(Tue) 11:57:37)
No36247 (じろうくん さん) に返信
> YahooやGoogleでキーワードを入力して、検索される件数を取得したいのですが、可能ですか?

Yahoo ではなく
Yahoo! ではないかな、という細かいツッコミはさておき。

Yahoo! API や Google API を使うと楽かと。
http://developer.yahoo.co.jp/webapi/search/websearch/v1/websearch.html
http://www.google.com/apis/

たとえば Yahoo! であれば、こんな感じ。(掲示板上に直接書いたコードにつき、未テストです)

 string const AppID = *******; // 実際に取得した Yahoo! 用の アプリケーション ID を指定します。
 string baseURL = @"http://search.yahooapis.jp/WebSearchService/V1/webSearch?query={0}&appid=" + AppID;
 void button1_Click(object sender, EventArgs e)
 {
  DataSet ds = new DataSet();
  ds.ReadXml(String.Format(baseURL, Uri.EscapeUriString(textBox1.Text))); // 検索文字列
  //dataGridView1.DataSource = ds.Tables["Result"];
  label1.Text = ds.Tables["Result"].Rows.Count.ToString(); // 取得件数
 }
引用返信 編集キー/
■36255 / inTopicNo.4)  Re[2]: 検索エンジンでの検索件数を取得したい
□投稿者/ じろうくん (2回)-(2009/05/26(Tue) 12:33:10)
YahooとかGoogleがAPIまで出してるとは知りませんでした。
いろいろ試してみます。
ありがとうございました。

解決済み
引用返信 編集キー/
■36260 / inTopicNo.5)  Re[2]: 検索エンジンでの検索件数を取得したい
□投稿者/ 魔界の仮面弁士 (1083回)-(2009/05/26(Tue) 13:21:52)
No36251 (魔界の仮面弁士) に追記
> たとえば Yahoo! であれば、こんな感じ。(掲示板上に直接書いたコードにつき、未テストです)
テストしてみたところ、間違っていたので修正しておきます。
(解決チェックは…とりあえず外しておきます)


>  string const AppID = *******;  // 実際に取得した Yahoo! 用の アプリケーション ID を指定します。
この部分は、
 const string AppID = 〜;
でした。


>  string baseURL = @"http://search.yahooapis.jp/WebSearchService/V1/webSearch?query={0}&appid=" + AppID;
このクエリだと、最大10件までしか取得されないので注意してください。
results パラメータを使うと、1回あたり最大50件まで増加できます。
次の結果を得るには、startパラメータです。(上位1000件までを取得できます)


>   label1.Text = ds.Tables["Result"].Rows.Count.ToString();  // 取得件数
ということで、これだと最大 10 件としか表示されません。すみません。
総件数を得るには、下記のように記述してみてください。

label1.Text = string.Format("{0:#,0}件", Decimal.Parse(ds.Tables["ResultSet"].Rows[0]["totalResultsAvailable"].ToString()));

引用返信 編集キー/
■36289 / inTopicNo.6)  Re[3]: 検索エンジンでの検索件数を取得したい
□投稿者/ じろうくん (3回)-(2009/05/26(Tue) 21:49:55)
ありがとうございます。
自分でもいろいろ試していますが、検索結果がサイトでの検索とAPIでの検索では微妙に違うのが気になります。
例えば、「hogemoge」で検索すると、サイトでは『14,500件』、APIでは『14,600件』が検索されます。
リクエストURLに国や言語を追加してみてもサイトとは違う結果になりました。
原因わかるでしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -