【Python】SEO対策に使うため上位100サイトの履歴を貯めていくツールを作ってみる

2018年9月24日

広告

前回ではSEO対策用として、コマンドプロンプト上で上位100サイトを閲覧できるツールを作成いたしました。

これがあれば簡単に、キーワードに対してどのようなサイトが上位を占めているのかを閲覧することができるようになります。

今回はその発展形として、定期的にpythonのスクリプトを回し、上位100サイトの履歴を記録していくツールを作成してみます。

【Python】SEO対策(時系列比較)に使うため上位100サイトの履歴を貯めていくツールを作ってみる

 

やってみたこと

 

  • Excelファイルを一つ用意して、そこに検索のためのキーワードを記入する。
  • Excelファイルのキーワードをもとに、googleの検索結果の上位100サイトを抽出して、CSVに保存していく。
  • データを貯める理由はSEO対策を的確にかつ、早めにおこなえるようにするため。最終的には時系列比較をしていきたいと思っているので。

 

結果

  • 上位100サイトのデータがCSVに保存できている。
  • 時系列比較をするためには、数日間はスクリプトを回して、データを貯めていく必要がある。
  • ターゲットとするキーワードが多くなると、その分CSVファイルだと容量がすぐ緊迫してきそうなので、データベースにデータを貯めたほうが間違いなく良い!

$ python grc_test.py

出力結果

pythonスクリプトの名前は「grc_test.py」としています。(挙動がそのまんまGRCっぽいため)

うまくCSVに追加できていますね!!

初回のみ、CSVを自動で生成し(【database】csv)、それ以降は、上書きしていきます。

実行時の日時が入るので、これで念願の時系列比較ができるようになりそうです。

実装

  • requests
  • beautifulsoup4
  • csv
  • datetime
  • pandas
  • time

 

実行前に、pythonスクリプトと同じフォルダへエクセルファイルを用意してください

今回は複数のキーワードの検索結果を一括で抽出したかったので、キーワードを保存するファイルを別途用意しています。

ファイル名は「調査URLクエリ設定先.xlsx」としています。シート名は「Sheet1」とします。

変える場合はコードもそれに合わせて書き換えてください。

中身は以下と同じにしてください。

具体的には3行目からURLとクエリ(キーワード)を記述するようにしておいてください。

URLは今回使っていません。

ですが、今後はこのURL(ドメイン)のものが何位なのかを返すこともできるようなスクリプトにしていけると思います。

 

作成したスクリプトを定期的に自動実行。スクリプトをexeファイル化してタスクスケジューラで回します。

EXEファイル化にはpyinstallerを使おうと思いましたが・・・エラーでEXEファイル化できず仕舞い・・・

スクリプトも作ったし、あとはこれを勝手に動かしてもらうようにするだけだーと意気込んでpyinstallerでEXEファイル化を試みました。

早速実行すると。。。

$pyinstaeer grc_test.py –onefile –noconsole

・・・

・・

RecursionError: maximum recursion depth exceeded

「RecursionError: maximum recursion depth exceeded」となり、EXEファイルが生成されませんでした。調べてみると再帰させすぎが原因らしく、解決するためにはSpecいじれ(?)との回答。

ここまでいくと流石に内容がソレてしまいそうなので、今回自動実行までいけませんでしたという結論になってしまい申し訳ございません。

今後としては、このエラーを解消し、EXEファイル化したあと、タスクスケジューラ(Windows)に登録して、定期的にスクリプトを実行する流れになります。

pytinstaller以外にもEXEファイル化するライブラリはありそうですが、早めに解消していきたいです。

なにかお知恵がありましたら是非教えてください(twiiterまで)

 

最後に

さて、前回作成したスクリプトでは、コマンドラインだけで完結していましたが。今回は「Excelの読み込み」「CSVへの書き出し」までおこなえるようになりました。

pythonは触り始めたばかりですが、ライブラリが豊富でマニュアルも多いので、楽しみながら学んでいます。

CSVに保存していますが、検索すべきキーワードが増えるとデータ量がすぐ大きくなってしそうな雰囲気です。

やはりデータはデータベースに入れて、分析なりを進めたほうが無難でしょう

今後はmysqlの導入と、ついに時系列比較とアラート機能を自動化していきたいと思います。

とはいえデータ量が少なくても時系列比較なりアラート機能は作成できるので、データベースの実装とどちらを優先させるかは悩みどころとします。

そのあたりも実装できたらエントリしたいとも思います(時期は未定)

 

以上です。

読んでいただきありがとうございます。

 

The following two tabs change content below.
sensiki

sensiki

名前:sensiki 職業:サラリーマン。いわゆる理系男子で大学からプログラミングを学び仕事でも活用中。好きな言語はPython。流行に疎いこともあり最近の話題を独自の視点でまとめていこうと思いブログ開始。スクレイピングや統計を用いたエントリを書きたいと思いまながらツールを作成中。