理系夫婦の方程式(りけいふうふのほうていしき)です。2019.09.03Pythonでブログの検索順位を取得するツールを作っています。検索キーワード一覧をExcelファイルから取得する部分を作ってきました。あわせて読みたいPython超初心者:PythonでExcelファイルを読み込むPython超初心者が、PythonでExcelファイルを読み込むプログラムを作成してみました。openpyxlのインストール、Excelの読み込み、「DeprecationWarning」の警告の消去を実践。今回は、今までの機能を実行後にExcelに結果を書き出す部分を作ってみます。ちなみに、この記事のタイトルをPython超初心者から、ただの初心者に変更してみました。「超」初心者は脱したでしょう。目次キーワード検索してExcelファイルに書き出すキーワードでGoogle検索して、ブログの順位をExcelファイルに書き出してみます。ソースコード作成したソースコードです。前回までのコードと被る部分がほとんどですが、今回追加した箇所のみ抜き出したら流れが分かり辛いので。検索キーワード一覧をExcelから読み込むキーワードでGoogle検索する検索順位をExcelに書き出すです。2~3を検索キーワード分繰り返します。1:print('検索範囲内にブログはありませんでした。1:print('検索範囲内にブログはありませんでした。今回新たに追加した機能を紹介します。forループで複数の検索キーワードで検索する検索キーワードは複数あるので、「Google検索して順位を取得する」という動作をforループで回します。word_list[ilist](今回はforループがたくさんあるので、ループ変数を「ilist」にして混乱しないようにしました。)日付を取得Excelファイルに検索順位を書き出す際、日付も一緒に出力していきたいので、日付を取得してみます。「datetime」モジュールをインポートします。(pipでインストールする必要はなかったです。#今日の日付プログラミング書籍なら翔泳社の通販『SEshop』Excelファイルに検索結果を書き出すここが今回の肝。シート変数「wr」に検索結果を出力するシートを設定し、cellに行番号、列番号と書き出す値を入れます。セルに入れる値も引数に書くのがポイント。wr.cell(row=now_row,column=now_col,value=blog_no)123wr.cell(row=now_row,column=2,value=str_url)wr.cell(row=now_row,column=3,value=blog_title)wr.cell(row=now_row,column=now_col,value=blog_no)VBAの方が書き出し方が簡単で分かり易いな・・・と。いちいち「row=***,columns=***」と書かなきゃいけないのが面倒くさいですね。引数に順番に値のみ書くようにすればいいのにな。Excelファイルの保存はbook.save('ブログ検索順位.xlsx')1book.save('ブログ検索順位.xlsx')でできます。ファイル名を読み込み時から変えれば新規に保存されますが、同じなら上書き保存です。上記のソースコードを実行して出力された結果はまぁ、やりたいことはできていますね。順位もしっかり表示できていますし。理系夫婦の方程式https://rikei-fufu.com/2019/04/12/post-424/」というふうに、タイトルの後にURLも付いてしまっています。日付も「2019-06-27」というフォーマットが気持ち悪い。好みの見た目になるように、少し改善してみます。スポンサーリンク見た目を改善しよう出力結果の見た目が良くなるように改善したソースコードです。print('検索範囲内にブログはありませんでした。1:print('検索範囲内にブログはありませんでした。上記コードのどこが改善点なのかをまとめます。日付のフォーマットを指定デフォルトだと「yyyy-mm-dd」形式で出力されてしまうので、「yyyy/mm/dd」とスラッシュで区切るようなフォーマットを指定してみます。datetime.date.today().strftime('%Y/%m/%d')1datetime.date.today().strftime('%Y/%m/%d')これでフォーマット指定できます。検索結果から取得した記事タイトルにURLが混じっているので、URLを削除します。この部分を追加しました。blog_title_s[:cut]「blog_title_s」は検索結果の記事タイトル文字列、「blog_url」はブログのTOPページURLです。「find」で文字列の中からブログURLが始まる場所を探します。「blog_title_s[:cut]」で、ブログURLより前の部分までを取り出して、違う文字列変数に格納しています。これを「スライシング」というようです。Pythonの文字列を抽出する方法まとめこれで文字列から不要な部分を削除できます。最終行・最終列の取得方法の変更プログラムを何回も実行していると、Excelの最終行・最終列の取得結果がおかしくなり、うまくファイルに書き出せないときがありました。セルの値を消していても、「空白ではないセル」として判断されちゃっているよう。「max_row」といった関数は使わず、while文で空白セルまでループして最終行を求めるようにしました。#空白セルまでループi=i+1cell(row,column)==Noneが空白セルとなります。このやり方だと上手く最終行・最終列の取得ができるようになります。改善してみたコードを実行してみるとこのようなExcelファイルができました。うん、良くなりました。日付も「yyyy/mm/dd」形式ですし、記事タイトルもURLが消えました。(「|理系夫婦の方程式」の部分も消した方がスッキリするな・・・後でやろう)あえて検索50位以内に入らなそうなキーワードも追加してみましたが、きちんと「×」が出力できています。(D9セル)基本的な機能はこれで備わったかな。あとは、やはりデスクトップアプリとして使えるようにGUIで操作できるようにしたいのと、グラフも作れるようにしたい。理想の検索順位取得ツールとなるように、これからもチャレンジしていきます。~おススメのプログラミング独学方法はこちらの記事にまとめました!あわせて読みたいプログラミングのおススメ独学方法は2パターン(あなたはどっち?)プログラミングを独習する場合、そのパターンは大きく2つに分かれます。網羅的に全体を学習したい場合と、作りたいものが明確な場合です。それぞれのパターンにおススメの勉強方法を、エンジニア歴7年の理系妻が紹介します。応援よろしくお願いします☆にほんブログ村ファミリーランキングこの記事を書いた人まゆみ理系夫婦の妻のほうです。大学、大学院(修士)で物理を専攻。2016年に長女を出産。フルタイム勤務ワーママ→休職中。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。SWELL.検索する。