Python初心者:ブログ検索順位取得ツールついに完成(?)

2019 11/25
Python初心者:ブログ検索順位取得ツールついに完成(?)

ついに、ついにブログ検索順位取得ツールが完成しました(!?)

(?)は、まだ追加したい機能もあるものの、「もう十分じゃない?」という思いから。

一時はやる気をなくしてPythonから離れていましたが、なんとか完成までくることができました。

今回は、今までのまとめ、前回の記事から追加した部分、そしてツールのソースコード全部載せでお送りします。

目次

作りたいもの

作りたい『ブログ検索順位取得ツール』の主な機能をあげますと

  • GUI操作でExcelファイルを選択する
  • Excelにある検索キーワード一覧を読み込む
  • 検索キーワードをGoogle検索する
  • Google検索結果の中に、当ブログが入っているかチェックする
  • ブログの順位と記事タイトル・URLをExcelに記入する
  • 検索キーワードと順位を表形式でGUI画面に表示する
  • チェックを入れたキーワードの順位変動をグラフにする
  • チェックは全選択、全選択解除を可能にする

GUI画面のイメージ図です。

作りたい画面
ツールの概要図

Excelファイルのフォーマットは以下のようにしました。
「検索ワード」シートに検索したいキーワードを書いておきます。
「検索順位」シートに検索でヒットした記事のURLとタイトル、順位を記載していきます。

Excelファイルのキーワード一覧
検索キーワード一覧シート
検索順位シート
検索順位シート

これまでの道のり(9記事)

Pythonで作りたい機能が全部実装できるか分からないまま見切り発車したのですが、なんやかんやありまして、形になってきました。
その経緯は以下の9記事に書いてあります。

その1:Pythonの導入からのGoogle検索

その2:Google検索結果の取得

その3:検索結果からURLとタイトルを取り出す

その4:Excelファイルを読み込む

その5:Excelファイルに書き出す

その6:Matplotlibでグラフを作ってみる

その7:tkinterでファイル選択ダイアログを表示

その8:tkinterでチェックボックス入りの表とスクロールバーを表示

その9:複数チェックボックスの制御

スポンサーリンク

追加した機能(グラフ作成ボタンの機能)

前回の記事から追加したのは、グラフ作成ボタン機能です。

「make plot」ボタンを押すと、チェックしてあるキーワードの順位をグラフに表示する

これにおいて、以前は日本語表示はしないからイイやと思っていたのですが、グラフの凡例に日本語の表示が必須となってきたので、Matplotlibの日本語化も行いました。

「make plot」ボタンが押された際に呼び出される関数を、以下のように書きました。

47~51行目で凡例の設定をしています。

まだ追加していない機能(今後入れるかも)は、「スクロールバーをマウス操作できるようにする」ことです。
今は後回しにしています。

ツール実行の様子

ツールの画面や実行の様子をご紹介します。

ブログ順位のアップデート

ブログの順位を取得する部分について、画面を紹介します。

以下のように表形式で、一番左にチェックボックスを付けてExcelファイルの中身を表示しています。

画面に表示される順位は、一番最後に検索した日付の順位です(Excelの一番右のセルの値をもってきている)。

ファイル読み込み時の画面
ファイル読み込み時の画面

「Update Rank」ボタンをクリックしてしばらくした後の画面は以下のようになります。

ブログ順位アップデート後の画面
ブログ順位アップデート後の画面

ブログの順位をアップデートし、順位が上がっていたら赤で「↑」も追加します。
逆に順位が下がっていたら青で「↓」を追加。
順位が前回と同じなら黒で「->」を追加して表示します。

また、50位以内にブログ記事がない場合は「None」と表示するようにしました。

グラフ作成

グラフはメインのGUI画面に埋め込むのではなく、別ウィンドウでそのまま表示させています。

こちらはGIF動画でご覧ください。

(Python/tkinter/Matplotlib)チェックされたキーワードの順位変動をプロットするGIF動画
チェックされたキーワードの順位変動をプロットするGIF動画

こんな感じでグラフが作成されます。

ひとまず、イメージしていたツールの機能が備わりました!

スポンサーリンク

ブログ検索順位取得ツールのソースコード全部載せ

長いので関数ごとに区切って載せますね。

あと、自分のみ使用すること前提で作っており、必要なエラー対策とかしていませんので、参考にする際はご注意ください。

さらに注意点として、ブログのプラグインの影響で、「<」「>」が文字化けしています。
心の目で、おそらく「<」だろうと感じてください。

なんとか対応しろよというご指摘はごもっともですが、上手くいかなかったので放置しています(汗)

メイン

ファイル選択ボタンの関数

Excelファイル読み込み関数

GUI上に表を作成する関数

検索順位アップデートボタンの関数

注意点として、1回の検索ごとに1分間sleepを入れています(44~45行目)。
そうしないと、検索数が多くてGoogle様に怪しまれ、検索できなくなってしまいます。
30秒待ちだと40件くらいの検索が限界でしたので、今は60秒待ちにしています。

スポンサーリンク

Google検索する関数

検索順位をExcelに書き込む関数

プロット作成ボタンの関数

上で紹介したプロット作成のと同じです。

プロットするデータの取得関数

その他(画面サイズ変更、チェックボックス制御)


ふぅ。

けっこう長くなったつもりでしたが、ざっと500行ほどのコードでした。
Python初心者でも、ネットで調べながら、これくらい作れました。

いまのところきちんと動いています。

何かご指摘やコメントがあればお気軽にお願いします☆

次は何を作ろうかな~

んじゃ、また~

関連記事

応援よろしくお願いします☆

この記事を書いた人

理系夫婦の妻のほうです。
大学、大学院(修士)で物理を専攻。
2016年に長女を出産。
フルタイム勤務ワーママ→休職中。
「CrowdWorks(クラウドワークス)」でお仕事受け付けております!
(ツール開発、記事執筆など)
「まゆみ1101」というユーザー名です!

コメント

コメントする

目次
閉じる