Googleの検索結果数を取得するサンプル

披露宴用のプロフィールビデオ作ったりして寝不足なbonlifeです…。
Googleの検索結果数を取得するサンプル(id:neko_trap:20071206:1196957909)が紹介されていたので、試してみたところ、なんだか上手く動作しませんでした。bタグをチェックしてるのですが、その出現場所が検索オプションの設定次第で変わるみたい。
ということで、別案。"絞り込み検索"のURLに検索結果数が含まれているのを利用してみました。

# -*- coding: utf-8 -*-

import re
import urllib2

urlopener = urllib2.build_opener()
urlopener.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]

g_url = "http://www.google.co.jp/search?hl=ja&num=100&q="
q_list = raw_input("query: ")
q_list = unicode(q_list, 'utf-8')
q_list = q_list.split()

def gen_q_num(q_list):
    for query in q_list:
        query = urllib2.quote(query)
        url = g_url+query
        html = urlopener.open(url).read()
        m = re.search('swrnum=(\d+)',html, re.M | re.S)
        yield {'query':query,'q_num':int(m.groups()[0])}

for result in gen_q_num(q_list):
    print "%s\t%d" % (result['query'],result['q_num'])

超シンプルな正規表現でグリグリっと。以下のような感じで検索結果数が出力されます。

> hoge.py
query: hoge hage
hoge    2810000
hage    1290000

BeautifulSoup使ってる例に比べるとダサい感じがしますが、まぁ、良いや。シンプルイズなんちゃら、ということで。(本当はAPI使おうと思ったのですが、知らないうちに時代は「Google SOAP Search API」から「AJAX Search API」に変わってたのね…。)