Googleと正規表現

正規表現使ってググれればいいのにと何度思った事だろうか…
正規表現だけで検索するってのは厳しいのかもしれないけれど、せめて通常の検索結果の絞り込みを正規表現で出来るようにするとかしてくれてもいいと思うの。

無ければ作れという言葉に従おうかと思ったものの、java scriptとか動的html生成なんて知らんし、webページとして公開するにも鯖なんて持ってないし、まぁ自分で使えればいいやという感じの物になった。
gem install hpricotが必要

#!ruby -Ku
require 'rubygems'
require 'hpricot'
require 'open-uri'

keyWord = URI.escape("ほげ")
keyRegexp = Regexp.new(".げら")
mainDoc = Hpricot(open("http://www.google.co.jp/search?num=1&hl=ja&q="+keyWord+"&ie=utf-8&oe=utf-8"))
results = []
0.step(500, 100) do |startIndex|
    page = Hpricot(open("http://www.google.co.jp/search?num=100&hl=ja&safe=off&start="+startIndex.to_s+"&q="+keyWord+"&ie=utf-8&oe=utf-8"))

    (page/"li.g").each do |result|
        next if result.at("div.s").class == NilClass
        results << result if keyRegexp =~ (result.at("div.s").inner_html).gsub(/<\/?em>/,"")
    end
end

mainDoc.at("li.g").swap(Hpricot::Elements[*results].to_html)
puts mainDoc.to_html

keyWordで600件ほどググったソース持ってきて、検索結果のサイト要約を一つずつkeyRegexpと一致するか確かめてる感じ。
つまり、要約の所に出てこないワードで絞り込むのは無理っていう。
出力を適当にリダイレクトしてブラウザで開くと、javascriptだか相対リンクだか何かのせいで多少変だけど、それっぽい検索結果が見られる。

参考:
http://tam.qmix.org/wiki/Hpricot.html
RubyでGoogle検索順位を調べる(ちょっと修正) - K's Garage Blog