Python初心者:検索結果をExcelファイルに書き出す

2019 9/03
Python初心者:検索結果をExcelファイルに書き出す

Pythonでブログの検索順位を取得するツールを作っています。

前回までに、

  • キーワードでGoogle検索
  • 検索結果からブログ順位を取得
  • 検索キーワード一覧をExcelファイルから取得

する部分を作ってきました。

今回は、今までの機能を実行後にExcelに結果を書き出す部分を作ってみます。

ちなみに、この記事のタイトルをPython超初心者から、ただの初心者に変更してみました。
さすがに「超」初心者は脱したでしょう。

目次

キーワード検索してExcelファイルに書き出す

キーワードでGoogle検索して、ブログの順位をExcelファイルに書き出してみます。

ソースコード

作成したソースコードです。

全部載せます。
前回までのコードと被る部分がほとんどですが、今回追加した箇所のみ抜き出したら流れが分かり辛いので。

やっていることは、

  1. 検索キーワード一覧をExcelから読み込む
  2. キーワードでGoogle検索する
  3. 検索順位をExcelに書き出す

です。2~3を検索キーワード分繰り返します。

追加箇所

今回新たに追加した機能を紹介します。

forループで複数の検索キーワードで検索する

検索キーワードは複数あるので、「Google検索して順位を取得する」という動作をforループで回します。

該当箇所はここ

(今回はforループがたくさんあるので、ループ変数を「ilist」にして混乱しないようにしました。)

日付を取得

Excelファイルに検索順位を書き出す際、日付も一緒に出力していきたいので、日付を取得してみます。

「datetime」モジュールをインポートします。(pipでインストールする必要はなかったです。標準で入っています。)

Excelファイルに検索結果を書き出す

ここが今回の肝。

シート変数「wr」に検索結果を出力するシートを設定し、cellに行番号、列番号と書き出す値を入れます。

セルに入れる値も引数に書くのがポイント。

VBAの方が書き出し方が簡単で分かり易いな・・・と。

いちいち「row=***,columns=***」と書かなきゃいけないのが面倒くさいですね。
引数に順番に値のみ書くようにすればいいのにな。

また、Excelファイルの保存は

でできます。

ファイル名を読み込み時から変えれば新規に保存されますが、同じなら上書き保存です。

ファイル書き出し結果

上記のソースコードを実行して出力された結果は

検索結果をExcelファイルに書き出した結果1

まぁ、やりたいことはできていますね。
順位もしっかり表示できていますし。

しかし、記事タイトルに書かれた文字列が、「Baby Kumon(ベビーくもん)に2年間(24回)通った効果 | 理系夫婦の方程式https://rikei-fufu.com/2019/04/12/post-424/」というふうに、タイトルの後にURLも付いてしまっています。

また、日付も「2019-06-27」というフォーマットが気持ち悪い。

好みの見た目になるように、少し改善してみます。

スポンサーリンク

見た目を改善しよう

出力結果の見た目が良くなるように改善したソースコードです。

改善点

上記コードのどこが改善点なのかをまとめます。

日付のフォーマットを指定

デフォルトだと「yyyy-mm-dd」形式で出力されてしまうので、「yyyy/mm/dd」とスラッシュで区切るようなフォーマットを指定してみます。

これでフォーマット指定できます。

記事タイトルからURLを削除

検索結果から取得した記事タイトルにURLが混じっているので、URLを削除します。

この部分を追加しました。

「blog_title_s」は検索結果の記事タイトル文字列、「blog_url」はブログのTOPページURLです。

「find」で文字列の中からブログURLが始まる場所を探します。

「blog_title_s[:cut]」で、ブログURLより前の部分までを取り出して、違う文字列変数に格納しています。
これを「スライシング」というようです。
参考: Pythonの文字列を抽出する方法まとめ

これで文字列から不要な部分を削除できます。

最終行・最終列の取得方法の変更

プログラムを何回も実行していると、Excelの最終行・最終列の取得結果がおかしくなり、うまくファイルに書き出せないときがありました。

セルの値を消していても、「空白ではないセル」として判断されちゃっているよう。

なので、「max_row」といった関数は使わず、while文で空白セルまでループして最終行を求めるようにしました。

最終列の取得

最終行の取得

cell(row,column)==None

が空白セルとなります。

このやり方だと上手く最終行・最終列の取得ができるようになります。

ファイル書き出し結果

改善してみたコードを実行してみると

検索結果をExcelファイルに書き出した結果2

このようなExcelファイルができました。

うん、良くなりました。
日付も「yyyy/mm/dd」形式ですし、記事タイトルもURLが消えました。
(「|理系夫婦の方程式」の部分も消した方がスッキリするな・・・後でやろう)

あえて検索50位以内に入らなそうなキーワードも追加してみましたが、きちんと「×」が出力できています。(D9セル)

基本的な機能はこれで備わったかな。

あとは、やはりデスクトップアプリとして使えるようにGUIで操作できるようにしたいのと、グラフも作れるようにしたい。

理想の検索順位取得ツールとなるように、これからもチャレンジしていきます。

んじゃ、また~

関連記事

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

この記事を書いた人

理系夫婦の妻のほうです。
大学、大学院(修士)で物理を専攻。
2016年に長女を出産、2021年に長男を出産。
フルタイム勤務ワーママ→休職→専業主婦。

コメント

コメントする

目次
閉じる