機能説明
指定したキーワードのサジェストキーワードを取得するツールです。
「サジェストキーワード」とは、検索エンジンがユーザーに対して提案するキーワードのことです。
コード全体
下記コードを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
ライブラリをインポートしています。
それぞれ、以下のような機能を持っています。
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には、例えば次のような値が入ります。
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.
何のサジェストキーワードを出力しているかカスタマイズしてください。
例えば、次のような出力です。
2.
複数のキーワードを一気に調査できるようにカスタマイズしてください。
例えば、次のように3つのキーワードを1回の実行で調査できるようにします。
・iPad
・副業
・アフィリエイト
3.
調査する間隔を1秒から2秒の間に変更してください。
4.
現在は「ベースとなるキーワード」+「あ~う」のサジェストキーワードを取得するプログラムになっています。
これを「ベースとなるキーワード」+「a~z」のサジェストキーワードを取得するプログラムにカスタマイズします。
つまり、「ipad a」、「ipad b」・・・・「ipad z」のサジェストキーワードを取得するようなイメージです。
ascii_lowercaseを使うと簡単に実装できます。
ascii_lowercaseの使い方については、ネットで検索して調べてみてください。
調べてもわからない場合はヒントを見ててください。
5.
自由にカスタマイズしてみてください。
「このようにカスタマイズしてみたい」という要望があって、やり方がわからない場合はチャットワークで質問してください。