>トップ
Google Count with start=990 query.
start=990 を付けると、えらい少ない総ページ数が出る検索語があるので、それに対応した google count スクリプトです
スクレイピングは、htree で解析して REXML 化して XPath でやっています
Google が返してくる内容に問題があることがあり、ruby 1.9 でこのスクリプトを実行して、UTF-8 な日本語文字列を検索した場合、HTree でのパースがうまくできないことがあります
#!/bin/sh
exec ruby18 -x "$0" "$@"
#!ruby
# coding:utf-8
# vi:set ts=3 sw=3:
# vim:set sts=0 noet:
require "open-uri"
require "cgi"
require "htree"
def make_url host, keyword
"http://#{host}/search?q=#{CGI.escape keyword}&start=990"
end
def query keyword
url = make_url "www.google.com", keyword
tree = nil
open url do |f|
tree = HTree.parse f
end
body = tree.find_element "{http://www.w3.org/1999/xhtml}body"
rexml_tree = body.to_rexml
#results = REXML::XPath.match rexml_tree, '/xhtml:div[@id="ssb"][1]/xhtml:p[1]/xhtml:b[3]/text()[1]', {'xhtml' => 'http://www.w3.org/1999/xhtml'}
# 2009/Nov/23
#results = REXML::XPath.match rexml_tree, '/div[@id="cnt"][1]/div[@id="ssb"][1]/p[@id="resultStats"][1]/b[3]/text()[1]'
# 2010/Sep/23
results = REXML::XPath.match rexml_tree, '/div[@id="cnt"][1]/div[@id="subform_ctrl"][1]/div[2]/div[@id="resultStats"][1]/text()[1]'
results[0]
end
#p(make_url("www.google.com", "ルビー"))
key = ARGV[0]
result = query key
print "#{key}: #{result}\n"