Google検索でキーワード入力時に出てくるサジェストの一覧をPythonで取得するスクリプトについて書いていきます。
目次
ライブラリ
今回はrequestsだけです。
pip install requests
Pythonコード・解説
APIからxml取得してそれをパースするだけといった感じ。query変数は各自で変更してください。
注意するところはUserAgentのところ。ブラウザからのアクセスを想定しているためUserAgentがないとエラーになるようです。
ここに実際に使われる値をheaderに設定してあげます。値はここを参考にしました。
https://qiita.com/kapiecii/items/093ffd6f0b09ad775250
ちなみにこのAPIの公式ドキュメント探してみたが見当たらなかった。非公式なのだろうか…。
import requests
import xml.etree.ElementTree as ET
# UserAgentを偽装しないと正常なデータを取得できない
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100"
}
url = "http://www.google.com/complete/search"
# キーワードは各自変更してください
query = "python"
response = requests.get(
url,
headers=headers,
params={"q": query, "ie": "utf_8", "oe": "utf_8", "output": "toolbar"},
)
# XMLデータをパースする
res_xml: ET.Element = ET.fromstring(response.text)
keyword_nodes = res_xml.findall("CompleteSuggestion/suggestion")
# サジェストのキーワードリスト
suggest_keywords = list(map(lambda x: x.attrib["data"], keyword_nodes))
print(suggest_keywords)
ちなみにこんな感じのxmlが取得できます。
findall(“CompleteSuggestion/suggestion)して.attrib[“data”]でサジェストキーワードを抽出できます。
<toplevel>
<CompleteSuggestion>
<suggestion data="python" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python 入門" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python インストール" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python for" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python range" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python if" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python csv 読み込み" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python 正規表現" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python 辞書" />
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="python 配列" />
</CompleteSuggestion>
</toplevel>