「Google Suggest」の検索候補をPythonで取得
Googleで検索したときに検索候補を表示してくれる「Google Suggest」、大変便利ですよね。
この機能は、現在入力したキーワードを元に、javascriptを使って別の候補を取得しています。
実はこの機能は、特定のURLにクエリを投げることで、検索候補を取得できるようになっています。
この機能をPythonから利用できるように、スクリプトを組んでみました。
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib import urllib2 import re class GoogleSuggestAPI: def __init__(self): self.base_url = 'http://www.google.co.jp/complete/search?output=toolbar&q=' self.xml_re = re.compile('<CompleteSuggestion><suggestion data="(.+?)"/><num_queries int="(.+?)"/></CompleteSuggestion>', re.DOTALL) def get(self, query): try: reader = urllib2.urlopen(self.base_url + urllib.quote_plus(query)) except: return None buf = reader.read() result_list = list() for match in self.xml_re.finditer(buf): result = dict([['suggestion', match.group(1)], ['num_queries', int(match.group(2))]]) result_list.append(result) return result_list if '__main__' == __name__: gsapi = GoogleSuggestAPI() result_list = gsapi.get('hello') if None == result_list: print 'Error' for result in result_list: print '%s: %d' % (result['suggestion'], result['num_queries'])
スクリプトからも推測できるかと思いますが、「http://www.google.co.jp/complete/search?output=toolbar&q=(キーワード)」にキーワードを送ることで、XMLのデータが返ってくるようになっています。
このスクリプトを「GoogleSuggestAPI.py」というファイルに保存して、実際に実行してみると以下のようなXMLが返ってきます。
<?xml version="1.0"?> <toplevel> <CompleteSuggestion><suggestion data="hello world"/><num_queries int="90200000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="helloween"/><num_queries int="3160000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hellowork"/><num_queries int="3410000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello project"/><num_queries int="95900000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello work go jp"/><num_queries int="2690000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello kitty"/><num_queries int="33900000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello online"/><num_queries int="114000000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello goodbye 歌詞"/><num_queries int="68700"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello again"/><num_queries int="81200000"/></CompleteSuggestion> <CompleteSuggestion><suggestion data="hello 歌詞"/><num_queries int="1840000"/></CompleteSuggestion> </toplevel>
これを正規表現で整形した結果を表示しているので、実行結果は以下のようになります。
>python ./GoogleSuggestAPI.py hello world: 90200000 helloween: 3160000 hellowork: 3410000 hello project: 95900000 hello work go jp: 2690000 hello kitty: 33900000 hello online: 114000000 hello goodbye 歌詞: 68700 hello again: 81200000 hello 歌詞: 1840000
「Google Suggest」は、多くの検索クエリーを蓄えている検索エンジンだからこそ作れる機能ですよね。
大変便利です。
もし、「Google Suggest」の機能をPythonから使ってみたい場合は、このコードを参考にしてみてください。