検索したときの結果をひとつひとつ調べるのは面倒くさくありませんか?

そこで今回は検索結果をまとめて取得するアプリをつくります。

ところでこんな情報があります。

検索順位の自動チェックツールがなぜダメなのか – ブラックハットSEO大全 番外編1

自分のサイトの順位がどうなっているのか知りたいものです。そこで自動チェックツールというものがあるのですが、Googleは自動化されたクエリを禁止しています。ソフトウェアを使って自動化されたクエリを Google に送信し、検索結果におけるウェブページの順位を調べようとする行為はしてはいけないことになっているのです。

ではYahooはどうなのでしょうか? 自動化されたアクセスを明確に禁じる利用規約が見当たりませんが、やっぱりやり過ぎは禁物です。

ということでほどほどに使いましょう。サーバーに過度の負荷をかけるようなことはしてはいけません。

外観はこんな感じです。上のテキストボックスに検索したい単語を入力してボタンをおすと検索結果を表示させることができます。

またいわゆる虫眼鏡ワード(検索回数が多いキーワード)も取得できるようにしました。

Yahooの場合、検索結果を表示するページのurlは

基本形は

https://search.yahoo.co.jp/search?p=<検索したキーワード>

ですが、実際には文字列が続きます。

今回は

https://search.yahoo.co.jp/search?p=<検索したキーワード>

を使います。

まず検索した結果が表示されているページのhtmlを取得する必要があります。これは

これでよさそうです。ところがこの内容をみてみると自分の手で検索したときとHTMLソースが異なっています。ずいぶんシンプルな形になっています。

これはどういうことかというと、取得されたテキストの最後の部分にありました。

この検索結果ページについて

セキュリティーアップグレードなどのアップグレードが終了しているブラウザ
CSS(カスケーディング・スタイル・シート)に対応していないブラウザ
CSSに対応しているが、Yahoo!検索の標準の検索結果ページをレイアウトするのに必要なCSSの対応が行われていないブラウザ
携帯端末に組み込まれたブラウザ・携帯端末向けブラウザ

これらを使って検索すると簡易版検索結果ページが表示されるのです。

さてここから必要なデータを抜き取るのですが、

検索結果の部分は

となっています。

そこで<div id=”web”>の部分から</div>を抜き取り、そのなかから<a href = “url”>ページタイトル</a>の部分を抜けばよいということになります。

こんな処理をするときに便利なのがAngleSharpです。このページを参考にして使ってみました。

【C#】AngleSharpの使い方メモ – Qiita

Visual Studioのメニュー[ツール] ⇒ [NuGetパッケージマネージャー] ⇒ [パッケージの管理]からAngleSharpをインストールしておきましょう。

まずurlがわかればHTMLソースを取得することができます。

このHTMLソースから必要な情報を抜き出します。

とやればaタグの要素をすべて取得することができます。

あとはforeach文で以下のようにやればurlとアンカーテキストを取り出すことができます。

まず検索してHtmlテキストを取得します。

つぎに上位サイトのタイトルとurlを取得するメソッドを示します。

つぎに虫眼鏡ワードを取得するメソッドを示します。

検索ワードを入力してボタンを押せば、検索結果上位10サイトのタイトルとurl、そして虫眼鏡ワードがあれば表示されます。