Pythonでサジェストを取得してみた

Pythonでサジェストを取得してみた

Pythonでサジェストを取得するプログラムを組んでみました。

サジェストって何?

これです。

これサジェストっていうんやな。知らんかった

SE犬
SE犬
ひなた
ひなた

「この文字で頻繁に検索されているのはこんなのです〜」ってのを出してくれているみたいだね。

Pythonでサジェストを取得

実際のコード

import argparse
from time import sleep
from string import ascii_lowercase
from string import digits
import requests
import urllib.parse

class GoogleAutoComplete:
    def __init__(self, test_mode=False):
        self.base_url = 'https://www.google.co.jp/complete/search?hl=ja&output=toolbar&ie=utf-8&oe=utf-8&client=firefox&q='
        self.test_mode = test_mode
        

        if test_mode:
            self.suggest_chars = ['あ', 'か', 'さ']
        else:
            #+αキーワードをファイルに保存して使う場合
            keyword_file = open('suggest_keyword.dat', 'r')
            self.suggest_chars = [keyword.rstrip() for keyword in keyword_file]

    def get_suggest(self, query, is_sleep=False):
        req = requests.get(self.base_url + urllib.parse.quote_plus(query)).json()
        suggests = [ph for ph in req[1]]
        if is_sleep:
            sleep(1)
        return suggests

phrase = input('Please! Your Phrase!! : ')
gac = GoogleAutoComplete(test_mode=True)
ret = gac.get_suggest(phrase,is_sleep=True)

print('_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/')
print('Searching Phrase---->[{0}]'.format(phrase))
for key in ret:
    print(key)

for keyword in gac.suggest_chars:
    print('_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/')
    print('Searching Phrase---->[{0}]'.format(phrase + ' ' + keyword))
    for output in gac.get_suggest(phrase + ' ' + keyword):
        print(output)

文字列格納用ファイル(suggest_keyword.dat)

あ
い
う
え
お
か
し

実行/結果

$python3 suggest.py
Please! Your Phrase!! : Python
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Searching Phrase---->[Python]
python
python 入門
python for
python if
python range
python list
python format
python できること
python 引数
python json
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Searching Phrase---->[Python あ]
python アプリ
python あまり
python アンインストール
python アップデート
python アプリ開発
python アニメーション
python アルゴリズム
python アスタリスク
python アプリケーション
python アンインストール windows
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Searching Phrase---->[Python か]
python 関数
python 改行
python 開発環境
python 環境構築
python 環境変数
python 仮想環境
python 関数 引数
python 改行コード
python カレントディレクトリ
python 階乗
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Searching Phrase---->[Python さ]
python 三項演算子
python サンプルコード
python 散布図
python 参考書
python 参照渡し
python 最大値
python サンプル
python サーバー
python 再帰
python 最新
​

思ったこと

改善点

検索ワード+1文字の「文字一覧」をファイルから用意する形にしていますが、用意するのは面倒。文字コードとかで自動生成するのがいいのか?でも不要な文字まで検索されそうだし。。。といった感じ。

やりたいこと1

当ブログのWebページ上で遊べる様にしたいですね。

検索ワードと+1文字選択してもらってツリー表示でみられる。もしくはクリップボードに保存できるなどなど

やりたいこと2

取得した情報を元にブログ記事を書くなんてのも楽しそう。タグ自動生成プログラムとか出来たら面白そうですね。

お困りさん

APIのURLの「client=firefox」これが気に入らないです。この辺のパラメータ情報は調べても中々出てこないので知っている方がいましたら教えていただけると飛んで喜びます。

Pythonカテゴリの最新記事