トップ

real-count

Intro

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"

履歴