RubyでGoogle検索順位を調べる(ちょっと修正)

以前作った、Googleでの検索順位を調べるRubyスクリプトですが、せっかく作ったので、会社のHPの順位を見るために、会社のLinuxサーバにCronで仕込んで、毎朝6時にチェックして、メールするようにしていたのですが、8/23から結果がちゃんと出てませんでした。
普通にブラウザで検索すると1ページ目に出ていたので、順位が下がったわけではなさそうです。
となると、Google検索結果で出力されるHTMLの構造が変わってしまったくらいしか考えられないので、Firebugで見てみると、やっぱり変わってました。
ということで修正しました。

続きを読む

Googleの検索順位を調べてみる(その2)

この前作ったGoogleの検索順位を表示するスクリプトですが、11位以降の順位を検索するために、検索URLに"&num="を指定すると、通常のブラウザで検索した時と違う結果になってたので、修正してみました。

続きを読む

Googleの検索順位を調べてみる

rubyでGoogleの検索順位を表示するスクリプトを書いてみました。
別に自分のブログの順位が気になるわけではないのですが、会社でいろいろと・・・。
毎回手で検索するのは面倒なので、試しにスクリプト書いてみました。
いけてそうなので、GW明けたら、Linuxサーバのcronにでも仕込もうかと。

HTMLの解析には、「hpricot」を使いました。
インストールは、「gem install hpricot」で。
hpricotの使い方は、ここここを参考にしました。
Googleの検索URLのパラメータはこちら

試した環境は、Mac OSX 10.5です。

とりあえず検索パラメータは最低限を指定してみました。
標準だと10位までしか検索しないので、パラメータで"&num=50"のように追加すると50位までで検索してくれます。
(これを指定すると、指定していない時とちょっと順位が変わるのはなぜ??)

検索結果のHTMLですが、「div class="g"」が検索結果のひとつづつに相当します。
で、各結果の一番したに表示されているURLは「span class="a"」の部分です。
なので、検索結果のHTMLから「div class="g"」を探し出し、その中の「span class="a"」を取り出し、検索対象URLが頭から一致した場合に、表示するようにしました。

以下のソースを実行すると、
6:kotyalog.blog91.fc2.com/blog-entry-247.html - 39k
と表示されます。現時点で、"takupapa"で検索すると6位ですね。
("&num=50"をつけるとなぜか9位)

ソースです。
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'cgi'

#検索単語
searchWord=CGI.escape("takupapa")

#順位を調べる対象のURL
searchUrl="kotyalog.blog91.fc2.com"

#検索結果を取得する
doc = Hpricot( open("http://www.google.co.jp/search?q=" + searchWord + "&lr=lang_ja").read )

#対象URLが含まれる検索結果を探し順位を表示する
(doc/"div.g").each_with_index do |result,i|
if (result/"span.a").inner_html =~ /^#{searchUrl}/
puts "#{i+1}:#{(result/"span.a").inner_html}\n"
end
end


rubyとかだとすぐに試せるし、便利なライブラリそろってるので、簡単にできるのいいですね。
とにかく、書いたらすぐに試せて、結果が見えるし。

8/23から検索結果のHTMLの構造が変わってたので修正しました。