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日生まれ。個人事業主、フリーランス、小規模法人の税務が得意で、一般の方向けにやさしい解説記事を書けるのが強み。詳しいプロフィールはこちら。
freee認定アドバイザー3つ星
BANZAl税理士事務所
5.0
Based on 10 reviews
powered by Google
Fumi AFumi A
10:10 07 Jan 23
今後の将来性を考えている時に伴先生にお会いしました。個人事務所を設立するか、法人を設立するか悩んでいましたが、メリット、デメリットを的確に教えて頂き今後の方向性を考えるのに大変助かりました。綺麗な事務所で凄くフランクで話しやすい方だったので、最初は何を話そうかと緊張していましたが、直ぐに解れて和気藹々と悩みを解決出来ました。是非、税務関係で悩まれている方がいましたら、私は伴先生をイチオシいたします。
K TK T
09:30 27 Dec 22
初めての確定申告で分からないことだらけな折り、知人の紹介で相談させて頂きました。会うまではとても緊張していましたが、伴さんの人柄がすごく相談しやすかったです。確定申告のソフトの使い方や間違いを詳しく説明頂き、とても分かりやすかったです!自分で悩んでいた内容がすぐに解決したので、また分からない事があったら真っ先に相談させて頂きます。ありがとうございました!
マハロマハロ
07:05 23 Dec 22
記帳の相談をするのに税理士の方を探していて、ネットで探していてホームページを見てアットホームな感じだったので決めさせて頂きました。担当してくださった税理士の方がとても親切に相談に乗って下さって、とても助かりました。また是非お願いしたいと思います。
岡田祐平岡田祐平
10:10 19 Nov 22
税理をお願いして3期目です。請求書、領収書等はScanSnapで送っておけば処理してくれる。会計ソフト freeeでの説明も分かりやすい。Chatworkでの普段のやり取りもレスポンスが早い。ITに強い税理士さんで、私にはすごく合っています。
名城真彦名城真彦
04:35 12 Nov 22
今期からBANZAl税理士事務所さんにお世話になっています。税理士さんに顧問をお願いするのは初めてで、他にも何社か税理士さんを検討したのですが、代表の伴さんの誠実な人柄に惹かれてこちらにお願いすることにしました。あとネットに強いところも決め手でした。いつも親身にご対応いただいていまして安心してやりとりができています。ちょっとした質問も気兼ねなくお応えいただいていてとても助かっています。
js_loader
pagetop
MENU CLOSE
https://ban-tax.com