サジェストキーワードの取得

機能説明

指定したキーワードのサジェストキーワードを取得するツールです。

メモ
「サジェストキーワード」とは、検索エンジンがユーザーに対して提案するキーワードのことです。

コード全体

下記コードをColaboratoryに貼り付け、実際の動作を確認してください。

◆コード

from time import sleep
import requests
import urllib.parse
import random

url = 'https://www.google.co.jp/complete/search?hl=ja&output=toolbar&ie=utf-8&oe=utf-8&client=firefox&q='

chrs = []
chrs = ["あ","い","う"]

key = 'ipad'
slist = []
for ch in chrs:
    r = requests.get(url + urllib.parse.quote_plus( key + ' ' + ch))
    if r.status_code == 200:
        buf = r.json()
        suggests = buf[1]
        slist.extend([suggests])
    sleep(random.uniform(0.03,0.5))

for s in slist:
    print(s)
    print('*******')

◆出力結果

['ipad アプリ', 'ipad アップデートできない', 'ipad アップデート', 'ipad アプリ 終了', 'ipad アクセサリー', 'ipad 赤シート', 'ipad アクティベーションロック', 'ipad アクセスガイド', 'ipad アマゾン', 'ipad アップルペンシル']
*******
['ipad イラスト', 'ipad イラスト アプリ', 'ipad イヤホン', 'ipad イヤホンジャック', 'ipad 印刷', 'ipad イラストレーター', 'ipad インチ', 'ipad イラスト おすすめ', 'ipad 位置情報', 'ipad インスタ']
*******
['ipad ウィジェット', 'ipad ウイルス対策', 'ipad 売る前に', 'ipad ウイルス', 'ipad 売る', 'ipad ウィジェット おすすめ', 'ipad 動かない', 'ipad ウイルスチェック', 'ipad ウェブカメラ', 'ipad ウィジェット ホーム画面']
*******

機能の説明

1.

from time import sleep
import requests
import urllib.parse
import random

ライブラリをインポートしています。

それぞれ、以下のような機能を持っています。

sleep:処理を一旦停止します
requests:Http通信を行います
urllib.parse:URLエンコードやデコードを行います
random:ランダムな数を生成します

2.

url = 'https://www.google.co.jp/complete/search?hl=ja&output=toolbar&ie=utf-8&oe=utf-8&client=firefox&q='

urlという変数に実際のURLの文字列を入力しています。

このURLはGoogleが提供しているURLで、最後の「q=」の後にキーワードを入力すると、そのキーワードのサジェストキーワードを取得することができます。

3.

chrs = []
chrs = ["あ","い","う"]

chasという空の配列を用意して、その中に「あ、い、う」の文字を入力しています。

4.

key = 'ipad'

keyという変数に「ipad」という文字列を入力しています。

このキーワードをベースにサジェストキーワードを取得します。

5.

slist = []

slistという空の配列を用意しています。

6.

for ch in chrs:

for文でchrs配列の要素分の繰り返し処理を行います。

7.

r = requests.get(url + urllib.parse.quote_plus( key + ' ' + ch))

はじめにkey変数とスペースとchrs配列内の要素を連結しています。

イメージとしては「ipad あ」という感じです。

続いて、urllib.parse.quote_plusメソッドを使用して、この文字列をエンコードしています。

エンコードとは日本語のような文字をコンピューターが扱いやすいような文字に変換することを言います。


エンコード前:ipad あ
エンコード後:ipad+%E3%81%82

最後にrequests.getメソッドを使って指定したURLのWebページの情報を取得し、rという変数に入力しています。

8.

if r.status_code == 200:

status_codeにはWebページを取得した際の状態を知らせてくれる値が入っています。

「200」は正常に取得できたことを意味します。

つまり、if文を使って、正常に取得できた場合にのみ、それ以降の処理を行うようにしています。

9.

buf = r.json()

取得したデータをJSON形式のデータ型に変更し、bufという変数に入力しています。

bufには、例えば次のような値が入ります。

[‘ipad あ’, [‘ipad アプリ’, ‘ipad air’, ‘ipad あると便利’, ‘ipad あんしん保証パック’, ‘ipad あいうえおキーボード’, ‘ipad あんスタ’, ‘ipad あると便利なもの’, ‘ipad 赤シート’, ‘ipad アップル’, ‘ipad あつ森’], [], {‘google:suggestsubtypes’: [[512, 4], [512, 10], [512], [512], [512], [512], [512], [512, 10], [512, 10], [512]]}]

10.

suggests = buf[1]

bufは配列になっていて、1番目に必要なデータが入っています。

これをsuggestsという変数に入力します。

11.

slist.extend([suggests])

extendメソッドを使って、slist配列にsuggestsを追加します。

12.

sleep(random.uniform(0.03,0.5))

random.uniformメソッドを使って、ランダムな数を生成します。

ここでは「0.03から0.5の間のランダム数」を生成するよう括弧内で値を指定しています。

指定した数の間、sleepで処理を停止します。

なお、これは連続実行しないようにするためです。

カスタマイズ

次のようなカスタマイズを行ってみてください。

1.
何のサジェストキーワードを出力しているかカスタマイズしてください。

例えば、次のような出力です。

「ipad あ」のサジェストキーワードは[‘ipad アプリ’, ‘ipad air’, ‘ipad あると便利’, ‘ipad あんしん保証パック’, ‘ipad あいうえおキーボード’, ‘ipad あんスタ’, ‘ipad あると便利なもの’, ‘ipad 赤シート’, ‘ipad アップル’, ‘ipad あつ森’]
「ipad い」のサジェストキーワードは[‘ipad イラスト’, ‘ipad イヤホン’, ‘ipad イヤホンジャック’, ‘ipad イラスト アプリ’, ‘ipad いくら’, ‘ipad 位置情報’, ‘ipad インスタ’, ‘ipad イラストレーター’, ‘ipad 印刷’, ‘ipad インターネット共有’]
「ipad う」のサジェストキーワードは[‘ipad ウィジェット’, ‘ipad ウイルスチェック’, ‘ipad ウイルス対策’, ‘ipad 動かない’, ‘ipad 売る前に’, ‘ipad ウィジェット おすすめアプリ’, ‘ipad ウイルス’, ‘ipad 売る’, ‘ipad ウェブカメラ’, ‘ipad ウィジェット ホーム画面’]

2.
複数のキーワードを一気に調査できるようにカスタマイズしてください。

例えば、次のように3つのキーワードを1回の実行で調査できるようにします。

・iPad
・副業
・アフィリエイト

ヒント1を見る
繰り返し処理にはfor文を使用します。
ヒント2を見る
3つのキーワードを格納する配列変数を用意してください。

3.
調査する間隔を1秒から2秒の間に変更してください。

ヒント2を見る
以下を修正します。

sleep(random.uniform(0.03,0.5))

4.
現在は「ベースとなるキーワード」+「あ~う」のサジェストキーワードを取得するプログラムになっています。

これを「ベースとなるキーワード」+「a~z」のサジェストキーワードを取得するプログラムにカスタマイズします。

つまり、「ipad a」、「ipad b」・・・・「ipad z」のサジェストキーワードを取得するようなイメージです。

ascii_lowercaseを使うと簡単に実装できます。

ascii_lowercaseの使い方については、ネットで検索して調べてみてください。

調べてもわからない場合はヒントを見ててください。

ヒント1を見る
ascii_lowercaseを使用するにはimportが必要です。

from string import ascii_lowercase
ヒント2を見る
とある配列にascii_lowercaseをextendメソッドで追加します

xxxxxx.extend(ascii_lowercase)

5.
自由にカスタマイズしてみてください。
「このようにカスタマイズしてみたい」という要望があって、やり方がわからない場合はチャットワークで質問してください。

タイトルとURLをコピーしました