中安拓也のブログ

プログラミングについて書くブログ

【Python】楽天カードの利用明細をダウンロードする

前回の記事

www.l08084.com

前回に引き続き、クレジットカードの利用明細のダウンロードをしていきます。

前回は、UIテスト自動化ツールのSeleniumuとChrome Driverをインストールして、ドコモのクレジットカードであるdカードの利用明細をダウンロードするところまでやりました。

バージョン情報

PCはmacOS Mojave(10.14.6)

  • selenium: 3.141.0
  • chrome: 76.0
  • ChromeDriver: 76.0
  • Python 3.7.3

楽天カードの利用明細をダウンロードする

f:id:l08084:20190915175346p:plain
ブラウザを自動操縦して利用明細をダウンロードしている様子
今回は、楽天カードの利用明細を引き続きPythonを使ってダウンロードしていきます。

今回は利用明細のダウンロードにrequestsモジュールを使用するため、ターミナルを開いて下記のコマンドを実行する必要があります。

$ pip install requests

続いて、Chromeを自動操縦して楽天カードの利用明細をダウンロードするPythonのコードを書きます。

楽天カードの利用明細をダウンロードするコード

前回同様、楽天カードサイトのユーザIDとパスワードはrakuten_credentials.pyファイルに別途定義しています。

苦労した点

f:id:l08084:20190915174543p:plain
利用明細CSVのダウンロードリンク

<a href="XX" class="stmt-c-btn-dl stmt-csv-btn">

利用明細のCSVリンクを取得する時に、CSSのクラス名からアンカータグのDOMを取得しようとしましたが、複数のclassが設定されていたため、どのメソッドで取得できるかがわかりませんでした。

python - Selenium Compound class names not permitted - Stack Overflow

この問題は上記のstackoverflowのサイトで解決しました。CSSのclassが二つ以上ある要素をSeleniumのfind_element_by_class_nameで取得しようとすると失敗しますが、代わりにfind_element_by_css_selectorを使えば取得できます。

tag = driver.find_element_by_css_selector('.stmt-c-btn-dl.stmt-csv-btn')

参考サイト

ゼロからはじめるPython(49) Pythonでブラウザ自動操縦してカード明細を自動でダウンロードしよう(その1) | マイナビニュース

ゼロからはじめるPython(50) Pythonでブラウザ自動操縦してカード明細を自動でダウンロードしよう(その2) | マイナビニュース