Google 検索のサジェスト機能からデータを取得する。(Python、XML、2021年5月)

Google 検索のサジェスト機能(Google suggest)のAPIを使ってデータを取得するための情報は多いが、古くなっている情報も多いので最新の情報をメモしておく。

PythonによるXML形式でのGoogle suggest API 取得

Google suggest API は、JSONで取得するコードが多いが、JSON形式はいつの間にか廃止されているようなのでXML形式を採用する

https://so-zou.jp/web-app/tech/web-api/google/suggest/

参考にしたコード

自分はPythonしか使えないのでPythonで取得している記事を参照する

https://gist.github.com/fpt/b21b8abea239392129b6

幾つか既に古くなっている箇所を補足する

unicodeメソッドは廃止されている。今は、文字列にするにはstr()だけで良い。

http://diveintopython3-ja.rdy.jp/porting-code-to-python-3-with-2to3.html

同時にこれによって、OSの規定の文字コードを取得するコード類も不要となる。

API内容の補足

日本語の検索結果にするか、日本にエリアを限定するかなどを設定できる。

https://importsem.com/query-google-suggestions-api-with-python/

コードの実装

自分は、対話式のJupyterで作業できれば良いので、コマンドプロンプトからの入力情報を受取る必要はない。なおparserをJupyterで使うにはテクニックがいるようだ。(自分は使っていないので慣れていない)

https://qiita.com/uenonuenon/items/09fa620426b4c5d4acf9

https://qiita.com/kzkadc/items/e4fc7bc9c003de1eb6d0

必要なライブラリの読み込み

import pprint
import requests
from lxml import etree
import numpy as np
import pandas as pd

検索したいワードを指定する

qstr = "セキュリティ"

APIIの取得

google_r = requests.get("http://www.google.com/complete/search",
                params={'q':qstr,
                        'hl':'ja',
                        'ie':'utf_8',
                        'oe':'utf_8',
                        'output': 'toolbar'})
google_root = etree.XML(google_r.text)

suggestされた語句の取得

google_sugs = google_root.xpath("//suggestion")
google_sugstrs = [s.get("data") for s in google_sugs]

データフレームに順番に格納する

google_suglist = []

for ss in google_sugstrs:
   google_suglist.append(ss)
   print(ss)

結果の出力

   セキュリティ
   セキュリティソフト
   セキュリティニュース
   セキュリティパッチ
   セキュリティインシデント
   セキュリティトークン
   セキュリティポリシー
   セキュリティグループ
   セキュリティコード
   セキュリティ 資格
google_suglist_df = pd.DataFrame(google_suglist)
display(google_suglist_df)


エクセルルファイルなどの書き出せる

google_suglist_df.to_excel("google_suglist_df.xlsx")