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)
0 | |
---|---|
0 | セキュリティ |
1 | セキュリティソフト |
2 | セキュリティニュース |
3 | セキュリティパッチ |
4 | セキュリティインシデント |
5 | セキュリティトークン |
6 | セキュリティポリシー |
7 | セキュリティグループ |
8 | セキュリティコード |
9 | セキュリティ 資格 |
エクセルファイルなどの書き出せる
google_suglist_df.to_excel("google_suglist_df.xlsx")