Googleの検索順位を調べてみる(その2)
この前作ったGoogleの検索順位を表示するスクリプトですが、11位以降の順位を検索するために、検索URLに"&num="を指定すると、通常のブラウザで検索した時と違う結果になってたので、修正してみました。
実際のブラウザでの検索と同じになるように、"start"パラメータを使って表示開始インデックスを指定するようにしました。
"sleep 1"ですが、テストでがんがんスクリプト動かしてたら、googleから不正なリクエストっていわれて、一時的に接続拒否されちゃったので、念のため入れました。
sleepなしでも連続でスクリプトを実行しなければ大丈夫だとは思います。
検索単語を変えたり、いろいろ何回かやってみましたが、だいたいブラウザと同じ検索結果になりました。
(完全ではなく、たまに違うこともありましたが、だいたい同じでした)
以下、ソースです。
#!/usr/bin/env ruby
$KCODE='u'
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'cgi'
#検索単語
searchWord=CGI.escape("er34")
#順位を調べる対象のURL
searchUrl="kotyalog.blog91.fc2.com"
#検索対象ページ数(1ページは10件)
pagenum = 5
start = 0
pagenum.times {|index|
start = index * 10
#検索結果を取得する
doc = Hpricot( open("http://www.google.co.jp/search?lr=lang_ja&q=" + searchWord + "&start=" + start.to_s ).read )
#対象URLが含まれる検索結果を探し順位を表示する
(doc/"div.g").each_with_index { |result,i|
if (result/"span.a").inner_html =~ /#{searchUrl}/
puts "#{start+i+1}:#{(result/"span.a").inner_html}"
end
}
sleep 1
}
unix的にやるなら、わざわざURLのチェックとかはせずに、単に順位付きで一覧するスクリプトにして、grepで検索するんでしょうねぇ。
タグ:プログラミング ruby
2008.05.10
| Comments(0) | Trackback(0) | WEB





