PythonでPCdesk(WEB版)へのログインを自動化する方法

税理士の伴 洋太郎(ばん ようたろう) @ban_tax240です。

Pythonで地方税ポータルシステムeLTAXに対応するソフトウェア、PCdesk(WEB版)。

PCdesk(WEB版)

ここへログインするためには、次のような作業が必要です

ログインに必要な作業
  1. PCdesk(WEB版)をブラウザで開く
  2. IDを入力する
  3. パスワードを入力する
  4. 「ログイン」ボタンをクリックする

これらを自動化するプログラムをPythonで作成しましたので、紹介します。

# ID,PASSを設定
ID = '****'
PASS = '****'

# パッケージインポート
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import glob 

# ブラウザの設定
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
extension_path = glob.glob('*.crx')
options.add_extension(extension_path[0])
service = Service(ChromeDriverManager().install())

# ログインページを開く
URL = 'https://www.portal.eltax.lta.go.jp/apa/web/webindexb#eLTAX'
driver = webdriver.Chrome(options=options,service=service)
driver.get(URL)
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,"//button[@class='f-login-button']")))

# 入力欄とログインボタンの場所を指定する
id_input = driver.find_element(By.XPATH,"//input[@id='sUserId']")
pass_input = driver.find_element(By.XPATH,"//input[@id='sPwd']")
rogin_button = driver.find_element(By.XPATH,"//button[@class='f-login-button']")

# ログインする
id_input.send_keys(ID)
pass_input.send_keys(PASS)
rogin_button.click()

コードを書く前の準備

コードを書く前に、いくつか準備しておくことがあります。

開発環境を構築しておく

なにはともあれ、pythonによるコーディングを行える環境を整える必要があります。はじめてPythonの開発に取り組む場合は、実行しましょう。

「python 環境構築」

でググればいくらでも情報が出てきますので、参考にしてください。

ライブラリをインストールしておく

「ライブラリ」とは、ある特定の分野に関する処理を行うプログラムをひとまとめにしたもののことです。

日付けや時刻に関する処理をまとめた「datetime」、Excelファイルを操作する処理をまとめた「openpyxl」など、数多くのライブラリがPythonで使用できます。

またライブラリには、Pythonのインストール時に同時にインストールされる「標準ライブラリ」と、後から追加しなければいけない「外部ライブラリ」とがあります。先述の「datetime」は標準ライブラリで、「openpyxl」は外部ライブラリです。

今回の開発する自動ログインプログラムでは、以下の2つの外部ライブラリを使用します

使用する外部ライブラリ
  1. selenium
    ブラウザ操作に関する機能をまとめたライブラリ
  2. webdriver_manager
    seleniumで使用するブラウザの管理に関する機能をまとめたライブラリ

過去にこれらを使ったことがない場合には、インストールしておきます。

インストール方法については

「python ライブラリ インストール」

でググればいくらでも情報が出てきますので、参考にしてください。

# 外部ライブラリをインストール
pip install selenium
pip install webdriver_manager

Chrome拡張機能をダウンロードしておく

PCdesk(WEB版)をChromeで正常に動作させるためには、拡張機能「eLTAX PCdesk(WEB版) Chrome拡張機能」を利用可能な状態にしておく必要があります。

拡張機能を有効化するために、拡張機能のファイル(拡張子.crx)をダウンロードしておきましょう。

ダウンロード方法は

「crxファイル ダウンロード」

でググって確認してください。

ダウンロードしたファイルは、これからコーディングするpythonファイルと同じフォルダに置いておきます

IDとパスワードを設定する

# ID,PASSを設定
ID = '****'
PASS = '****'

ログイン対象のIDとパスワードを設定します。

上記「****」を、実際のものに書き換えてください。

ライブラリから使用する機能をインポートする

インストールしたライブラリには、さまざまな機能が含まれています。

そのうち、このプログラムで使用する機能だけを呼び出しましょう。

# パッケージインポート
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
import glob

上記のコードでは、以下の機能を呼び出しています。

  • ブラウザを自動操作する機能(2行目)
  • ブラウザ上の位置を指定する機能(3行目)
  • ブラウザのバージョンを自動更新する機能(4行目)
  • バージョン自動更新をChromeに実装する機能(5行目)
  • ブラウザの待機処理に使う機能(6~7行目)
  • ダウンロードした拡張機能を呼び出すのに使用する機能(8行目)
 Chromeの操作を自動化するためには、普段使用しているChromeと同じバージョンのChromeDriverを事前にダウンロードしておく必要があります。
ChromeDriverManegerを利用すると、ダウンロードを自動化できてむちゃくちゃ便利です。

ブラウザを設定する

# ブラウザの設定
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
extension_path = glob.glob('*.crx')
options.add_extension(extension_path[0])
service = Service(ChromeDriverManager().install())

上記のコードでは、次の処理を行っています。

  • プログラムの実行が完了してもブラウザを開いたままにする(2~3行目)
  • 拡張機能を有効化する(4~5行目)
  • ブラウザ自動更新を有効化する(6行目)

ログインページを開く

# ログインページを開く
URL = 'https://www.portal.eltax.lta.go.jp/apa/web/webindexb#eLTAX'
driver = webdriver.Chrome(options=options,service=service)
driver.get(URL)

上記のコードでは、次の処理を行っています。

  • URLを指定する(2行目)
  • 指定したURLをChromeで開く(3~4行目)

入力欄とログインボタンの場所を指定する

# 入力欄とログインボタンの場所を指定する
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,"//button[@class='f-login-button']")))
id_input = driver.find_element(By.XPATH,"//input[@id='sUserId']")
pass_input = driver.find_element(By.XPATH,"//input[@id='sPwd']")
rogin_button = driver.find_element(By.XPATH,"//button[@class='f-login-button']")

上記のコードでは、次の処理を行っています。

  • ログインボタンが表示されるまで待機(2行目)
  • id入力欄の場所を指定(3行目)
  • パスワード入欄の場所を指定(4行目)
  • ログインボタンの場所を指定(5行目)
2行目では、「ログイン」ボタンがブラウザ上に表示されるまで15秒間待機しています。
インターネット回線に問題がある場合や、eLTAXの稼働時間外にアクセスした場合には、ここで例外が発生してプログラムが終了します。

ボタンの場所を指定する方法

ログインボタンの場所を指定する方法はいくつかあるのですが、ここでは「XPath」という記法によって表現しています。XPathは、HTMLなどで記述された内容のなかから特定の箇所を指定するための言語です。

PCdesk側の仕様変更によってログインボタンの場所が変わる可能性もあります。その場合は、上記コード内のXPathも変更しなければなりません。

Chromeの場合、つぎの方法でXPathを簡単に取得できます。

XPathの取得方法
  1. Chromeのデベロッパーツールを開く(Windowsの場合「F12」キーを押す)
  2. XPathを取得したい場所を右クリックする
  3. 「検証」を選択する
  4. デベロッパーツール内のハイライトされている部分を右クリックする
  5. Copy>Copy XPath の順に選択する

下記はPCdeskではありませんが、e-Taxの画面を使ってXpathを取得する様子を動画にしたものです。

ログインする

# ログインする
id_input.send_keys(ID)
pass_input.send_keys(PASS)
rogin_button.click()

上記コードでは、以下の処理を実行しています。

  • ID入力欄にIDを入力する(2行目)
  • パスワード入力欄にパスワードを入力する(3行目)
  • 「ログイン」ボタンをクリックする(4行目)

まとめ

Pythonを利用したPCdesk(WEB版)への自動ログインプログラムについて解説しました。

ライブラリを利用すれば、短いコードで処理を実装することが可能です。お試しあれ!

この記事を書いたひと

伴 洋太郎(ばん ようたろう)
伴 洋太郎(ばん ようたろう)税理士
BANZAI税理士事務所 代表税理士。1級ファイナンシャル・プランニング技能士。1982年6月21日生まれ。個人事業主、フリーランス、小規模法人の税務が得意で、一般の方向けにやさしい解説記事を書けるのが強み。詳しいプロフィールはこちら。
pagetop
MENU CLOSE
https://ban-tax.com