Python超初心者が『ブログの検索順位を取得するツール』を作ろうと奮闘しています。
前回まで、Google検索結果から自分のブログの順位を取得する部分を作成しました。
今回は、検索キーワードを一覧にしたファイルを読み込む部分を作っていきます。
ファイルはExcelファイルを使用。
PythonはExcelを扱うモジュールも揃っていて便利ですね。
一から調べつつ、Excelファイルを読み込む部分を作ってみました。
読み込みたいファイル
今回はExcelファイルに検索キーワード一覧を入れ、それを読み込ませます。
テキストファイルやcsvファイルでも良いのですが、検索結果を別シートに乗せて1つのファイルで保存できるExcelが便利と判断。
ひとまず、以下のようなExcelファイルを作成しました。
シートは2つ。「検索ワード」と「検索順位」です。
「検索ワード」シートに検索キーワードを5つほど入れてあります。
「検索順位」シートは白紙状態です。
openpyxlのインストール
まずはPythonでExcelファイルを扱うのに必要なモジュールをインストールします。
今回使うのは「openpyxl」というものです。
参考:【Python入門】Excel(エクセル)を操作(読み書き)するには?
いつものように、pipコマンドでインストールしました。
Excelファイルを読み込む
検索ワード一覧が入っているExcelファイルを読み込むコードを作ってみます。
ソースコード
以下のページを参考に、Excelファイルを読み込む部分を作成しました。
参考:PythonでExcel作業を自動化するOpenPyXLのはじめての使い方
import openpyxl as px
#Excelブックオープン
book = px.load_workbook('ブログ検索順位.xlsx')
#シート名取得
sheet = book.get_sheet_names()
#シート名表示
print(sheet)
for i in range(len(sheet)): #シート数分ループ
if sheet[i] == '検索ワード':
word_sheet = sheet[i]
#シートを設定
ws = book.get_sheet_by_name(word_sheet)
#最大行の取得
erow = ws.max_row
word_list = [] #検索ワードリスト
for i in range(erow): #最終行までループ
#セルの値をリストに追加
word_list.append(ws.cell(row=i+1,column=1).value)
#検索ワードリストの表示
print(word_list)
やっていることは、
- Excelファイルを開く
- シート名を取得、表示
- 検索ワードのシートを設定
- 書き込まれているセルの最終行を取得
- リストにセルの値を追加していく
- リストの表示
といった流れです。
実行結果
上記ソースコードを実行してみました。
きちんとExcelファイルの中身を読み込めてはいるけど、良くわからない警告文が2つ出てしまっています。
このままでもいいけど、警告を取ってすっきりしたい。
DeprecationWarning を消すには?
「DeprecationWarning」を調べてみると、古い関数で廃止される可能性がある関数なので、違うのを使えという警告みたいです。
参考:OpenPyXLでget_sheet_names()使用時のDeprecationWarning
簡単に警告を消すことができそう。
以下のようにソースを修正してみました。
import openpyxl as px
#Excelブックオープン
book = px.load_workbook('ブログ検索順位.xlsx')
#シート名取得
#sheet = book.get_sheet_names()
sheet = book.sheetnames
#シート名表示
print(sheet)
for i in range(len(sheet)): #シート数分ループ
if sheet[i] == '検索ワード':
word_sheet = sheet[i]
#シートを設定
#ws = book.get_sheet_by_name(word_sheet)
ws = book[word_sheet]
#最大行の取得
erow = ws.max_row
word_list = [] #検索ワードリスト
for i in range(erow): #最終行までループ
#セルの値をリストに追加
word_list.append(ws.cell(row=i+1,column=1).value)
#検索ワードリストの表示
print(word_list)
変更点は2か所です。
①Excelブックのシート名一覧取得の関数を「book.get_sheet_names()」から「book.sheetnames」に変更。
②シートを変数に設定する関数を「book.get_sheet_by_name(シート名)」から「book[シート名]」に変更。
警告文に書いてある通りの関数を使用することにしました。
修正版の実行結果
警告が出ないように修正したコードを実行してみると
無事、警告が出なくなりました。
シート名と検索ワード一覧のみ出力されています。
これで検索キーワード一覧を取得する部分はOK。
次は検索結果の順位をExcelに書き出す部分を作っていきます。
んじゃ、また~
おススメのプログラミング独学方法はこちらの記事にまとめました!
コメント