【Python】SEO対策に使うため上位100サイトをさくっと抽出するツールを作ってみる
SEO対策はとてもめんどくさいです。
何がめんどくさいって調査がとてもめんどくさい。例えば内部リンクを整えようと考えても、自サイトの内部リンクを自力で調査するのは現実的ではありません。
なにかしらのツールを使うべきです。ですがSEO対策ツールってどうしてこう有料なものばっかりなんでしょうか!!!いえビジネスであることは重々承知です。
とはいえ高価すぎる気がしてなりません・・・。なので、無ければ作ってしまおうと思いました。
【python】SEO対策に使うため上位100サイトをさくっと抽出するツールを作ってみる
SEO対策を生業にしている人はもちろんですが、最近では個人ブログなりサイトを運営する人も増えてきました。そういった人はgoogleなどの検索順位チェックをおこなっています。
結論から言うとこれが非常にめんどくさいです。googleアナリティクスやサーチコンソールでは自分のサイトの順位しか表示されません。ですが、SEO対策は自分のサイトだけ見ていればいいわけではありません。他のサイトの動きを見ることも重要です。
有名なSEO対策ツールとしてはGRCが有名です。ですが副業や趣味でちょっとサイトを運営しているという人にとっては、とても高いのです!!(最近利用料の値上げをしたようですね)
フリーのソフトもありますが、これがどうにも使い勝手が悪い印象でした。それに大体体験版のような扱いで、本格的に使いたかったらお金払ってねというものです。
フル版を買ってもいいけど、いらない機能まで付いてくるのは正直本位ではありません。
どのツールを選んでも自分にしっくりくるものがないので、Googleの検索順位チェックのためのSEOツールをpythonで作ることにしました。
Google検索順位チェックツール
ほしいと思う機能は沢山ありますが、とりあえず最初ということもあるので、シンプルなものを目指します。
検索キーワードの上位100サイトを検索結果からスクレイピングする
↑こんな感じになりました。
ちなみに「python seo対策」で検索した際の画面です。検索キーワードに対しての上位100サイトがズラッと見ることが出来ます。
正直言うとこれだけではなんの分析もできません。ですがここまで出来れば、あとは大体のことはできるでしょう。とにかく直感的に順位状況がすぐに掴めるお手軽さを目指しました。
サジェストワードの抽出はすでに作成しているので、そちらを使ってどうぞ
キーワードに関するユーザーニーズを把握することは重要です。これについてもキーワード選定ツールを使うべきでしょう。
有名どころではgoodkeywordなどがありますが、イマイチ直感的ではないと思ったので、関連語の見える化ツールを作成して公開しています。
googleのAPIを使用して関連ワードを引っ張ってきて、描画ライブラリを使って見える化しています。(スマホでは見づらいと思いますので、お手数ですが、PCで閲覧願います)
キーワードを選定しても、何について書いて良いのかで悩み、なかなか書けないことがあると思います。そういったときはツールでキーワードを検索してみると、思わぬ関連語が見つかるかもしれません。
とはいえ、関連語ツールに頼りすぎるのも要注意です。なぜなら他の人も同じものを見ているからです。
書かれている内容が重複していると判断されると、せっかく気合を入れて書いても検索上位には表示されません。
googleも言っていますが、記事にはオリジナリティが必要です。関連語ツールは誰もが考えている言葉なので、それを説明するだけで終わらないようにしたほうがいいと思います。
(ちなみに作成した際の備忘録も、書いていますので興味がある方はどうぞ、言語はRubyを使っています)
GRCはやっぱりすごい、けど初期リサーチを自動化したいし、アラート機能も欲しい
SEO対策ツールといえばGRCが有名です。契約プランにもよりますが、多くのキーワードを登録しておけますし、過去からの推移もグラフ化してくれます。
それから最も良いと思っている機能はアラート機能です。
かなり細かくアラート設定できるので、GRCはすごいなあと感心しています。
ブロガーの方を見ても大体の人がGRCを使っているようです。
ですがGRCを使っていても、初期リサーチは人間が気づかなければなりません。持っているだけではなく、画面を見て考える必要があります。私はここも自動化していきたいと考えています。
指定キーワードの上位100サイトのタイトルとURLを抽出するpythonのスクリプト
最初に、以下ソースコードです。
import sys#ターミナルの引数を返してくれる import pyperclip import requests import bs4 import csv import datetime #キーワードの受け取り(引数から。なければクリップボードから) if len(sys.argv) > 1: search_url_keyword = ' '.join(sys.argv[1:]) else: search_url_keyword = pyperclip.paste() print('【検索クエリ】{}'.format(search_url_keyword)) #検索順位取得処理 if search_url_keyword and search_url_keyword.strip(): #Google検索の実施 search_url = 'https://www.google.co.jp/search?hl=ja&num=100&q=' + search_url_keyword print("[INFO]Googleにアクセスしました") res_google = requests.get(search_url) print("[INFO]検索結果の取得に成功しました。") print("-----------------------------------------------------------------------") res_google.raise_for_status() #BeautifulSoupで掲載サイトのURLを取得 bs4_google = bs4.BeautifulSoup(res_google.text, 'lxml') link_google = bs4_google.select("div.kCrYT>a") for i in range(len(link_google)): #なんか変な文字が入るので除く site_url = link_google[i].get('href').split('&sa=U&')[0].replace('/url?q=', '') site_title=bs4_google.select("div.kCrYT>a>div.vvjwJb")[i].text#textで中身抽出。stringでもいいけど今回はnoneが返る if 'https://' in site_url or 'http://' in site_url: #サイトの内容を解析 try: print("[{}位:「{}」,URL「{}」]".format(i+1,site_title,site_url)) except: continue print("ok")#終わり
beautifulsoupを使って検索結果から情報を取得します。今回pythonで始めてこういったものを作りましたが、ライブラリが使いやすく、時間をかけずに作れるのは便利ですね。
※2019年11月6日 記載していたソースコードが動かなくなっていたため、修正いたしました。
Google側の変更により、コードが動かなくなる場合がございます。
動かなくなっていた場合は、twitter(@trend_tracer)までご連絡いただければ修正いたします。
使い方
コマンドプロンプトにて、作成したpyファイルがある場所まで移動して、以下を実行してください。
例
- python sample.py プレゼント
「python 〇〇(←作成したファイル名) 〇〇(←検索したいキーワード)」
という感じです。ちなみに検索したいキーワードになにも入力がなかった場合、クリップボードの文字列を取得して、それをキーワードとして結果を取得します。
開発環境
- Windows10
- Python 3.6.5
pip
- beautifulsoup4
- requests
- pyperclip(引数なしの場合、クリップボードで検索)
pythonの環境はアナコンダで構築しました。アナコンダのダウンロードページからインストーラーをダウンロードします。手順はこちらのサイトを参考にしました。
バージョンは最新のものからインストールすればいいと思います。ちなみにアナコンダとは必要そうなライブラリなどをまとめて一つのパッケージにしてくれているものです。何を言っとるんだと思われる方は、最初の面倒な設定が不要になるくらいに思っておけばいいと思います。
理由もなければpythonのインストールはanacondaを使えばいいでしょう。
参考サイト
今回のコードはこちらのサイト様のコードを参考にさせていただきました。
google検索順位チェック用のSEOツールをpythonで自作して自動化する。
検索結果の取得と、それをCSVに書き出すところまでを公開してくれています。すごい便利です・・・。タイトルやh1タグ、文字数なども列挙してくれるもので、少し実行完了まで時間がかかるスクリプトです。(上位サイトすべてにアクセスして情報を引っ張ってきているため)。
自動実行のやり方まで書いてくれています・・・。
対してこちらのスクリプトは実行するとタイトルとURLのみ出力。すぐに結果が確認できる、お手軽版としてご活用ください。
[adsense][adsense]
最後に
pythonを使ったスクレイピングツールは始めて作りましたが、とても便利ですね。beautifulsoupも始めて使ったのですが、正直面白く、やろうと思えばなんでもできるじゃん!という感じです。
参考サイト様では、次回として「検索順位の時系列比較+アラート編」が予告されていますが、まだ投稿がされていません。正直かなり欲しい機能なので待ち続けますが、自分でもトライしてみようかな・・・、という感じです。
もしトライしてうまくいったらエントリします。(できなかったらすみません。)
以上です。読んでいただきありがとうございます。
追記
を公開しました。
ディスカッション
コメント一覧
まだ、コメントがありません