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")