Pythonでe-TAXへのログインを自動化する方法

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

Pythonでe-Taxソフト(WEB版)へログインするためには、次のような作業が必要です

ログインに必要な作業
  1. e-Taxソフト(WEB版)をブラウザで開く
  2. 「ログイン」ボタンをクリックする
  3. IDを4桁ごとに分けて入力する
  4. パスワードを入力する
  5. 「ログイン」ボタンをクリックする

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

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

# ログイン先のURL、利用者識別番号、パスワードを設定
URL = 'https://clientweb.e-tax.nta.go.jp/UF_WEB/WP000/FCSE00001/SE00S010SCR.do'
ID_1 = '1234'
ID_2 = '5678'
ID_3 = '9012'
ID_4 = '3456'
PASS = 'pass-word'

# 拡張機能と自動バージョン管理を有効化
extension_path = glob.glob('e-TaxAP*.crx')
options = webdriver.ChromeOptions()
options.add_extension(extension_path[0])
service = Service(ChromeDriverManager().install())

# ログインメニューを開く
driver = webdriver.Chrome(options=options,service=service)
driver.get(URL)
button1_xpath = '//img[@alt="ログイン"]' 
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,button1_xpath)))
time.sleep(1) 
button1 = driver.find_element(By.XPATH,button1_xpath)
button1.click()

# ログインを実行
id_xpath = '//div[@id="dijit_layout_ContentPane_17"]/input'
pass_xpath = '//input[@id="maskat_widget_dojo_55"]'
button2_xpath = '//a[@tabindex="28"]/img[@alt="ログイン"]'
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,id_xpath)))
time.sleep(1)
id1_input = driver.find_element(By.XPATH,f'{id_xpath}[1]')
id2_input = driver.find_element(By.XPATH,f'{id_xpath}[2]')
id3_input = driver.find_element(By.XPATH,f'{id_xpath}[3]')
id4_input = driver.find_element(By.XPATH,f'{id_xpath}[4]')
pass_input = driver.find_element(By.XPATH,pass_xpath)
id1_input.send_keys(ID_1)
id2_input.send_keys(ID_2)
id3_input.send_keys(ID_3)
id4_input.send_keys(ID_4)
pass_input.send_keys(PASS)
rogin_button_2=driver.find_element(By.XPATH,button2_xpath)
rogin_button_2.click()

コードを書く前の準備

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

開発環境を構築しておく

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

「python 環境構築」

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

ひとまず、「Anaconda」をインストールしておけば間違いはないでしょう。Anacondaとは、Pythonの開発に必要なものをひとまとめにしたパッケージのことです。

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

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

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

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

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

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

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

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

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

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

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

e-TaxAPをダウンロードしておく

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

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

ダウンロード方法は

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

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

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

コードを書く

冒頭で紹介したコードを、各要素ごとに説明します。

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

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

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

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

上記のコードでは、以下を設定しています。

  • ブラウザを自動操作する機能(2行目)
  • ブラウザ上の位置を指定する機能(3行目)
  • ブラウザのバージョンを自動更新する機能(4行目)
  • バージョン自動更新を実装する機能(5行目)
  • ダウンロードした拡張機能を呼び出すのに使用する機能(6行目)
  • ブラウザの待機処理に使う機能(7~9行目)

ログイン先のURL、利用者識別番号、パスワードを設定する

# ログイン先のURL、利用者識別番号、パスワードを設定
URL = 'https://clientweb.e-tax.nta.go.jp/UF_WEB/WP000/FCSE00001/SE00S010SCR.do'
ID_1 = '1234'
ID_2 = '5678'
ID_3 = '9012'
ID_4 = '3456'
PASS = 'pass-word'

上記のコードでは、以下を設定しています。

  • e-taxログインページのURL(2行目)
  • 利用者識別番号(3~6行目)
  • 暗証番号(7行目)

利用者識別番号は、4ケタずつ入力します。

ID(利用者識別番号)とPASS(暗証番号)はダミーです。実際に使用するものに書き換えましょう。書き換える際は、「'」と「'」の間に値を入力してください。

e-TaxAPとバージョン自動管理を有効化する

# e-TaxAPと自動バージョン管理を有効化
extension_path = glob.glob('e-TaxAP*.crx')
options = webdriver.ChromeOptions()
options.add_extension(extension_path[0])
service = Service(ChromeDriverManager().install())

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

  • e-TaxAPファイル(.crx)のファイルパスを取得(2行目)
  • ブラウザのオプションに拡張機能を追加(3~4行目)
  • ブラウザ自動更新を有効化(5行目)
 Chromeの操作を自動化するためには、普段使用しているChromeと同じバージョンのChromeDriverを事前にダウンロードしておく必要があります。
ChromeDriverManegerを利用すると、ダウンロードを自動化できてむちゃくちゃ便利です。

ログインメニューを開く

# ログインメニューを開く
driver = webdriver.Chrome(options=options,service=service)
driver.get(URL)
button1_xpath = '//img[@alt="ログイン"]' 
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,button1_xpath)))
time.sleep(1) 
button1 = driver.find_element(By.XPATH,button1_xpath)
button1.click()

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

  • 指定したURLにアクセス(2~3行目)
  • 「ログイン」ボタンの場所を指定(4行目)
  • 「ログイン」ボタンがクリックできる状態になるまで待機(5~6行目)
  • 「ログイン」ボタンをクリック(7~8行目)
e-Taxの稼働時間外にアクセスした場合、ここで例外が発生してプログラムが終了します。

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

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

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

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

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

ログインする

# ログインを実行
id_xpath = '//div[@id="dijit_layout_ContentPane_17"]/input'
pass_xpath = '//input[@id="maskat_widget_dojo_55"]'
button2_xpath = '//a[@tabindex="28"]/img[@alt="ログイン"]'
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH,id_xpath)))
time.sleep(1)
id1_input = driver.find_element(By.XPATH,f'{id_xpath}[1]')
id2_input = driver.find_element(By.XPATH,f'{id_xpath}[2]')
id3_input = driver.find_element(By.XPATH,f'{id_xpath}[3]')
id4_input = driver.find_element(By.XPATH,f'{id_xpath}[4]')
pass_input = driver.find_element(By.XPATH,pass_xpath)
id1_input.send_keys(ID_1)
id2_input.send_keys(ID_2)
id3_input.send_keys(ID_3)
id4_input.send_keys(ID_4)
pass_input.send_keys(PASS)
rogin_button_2=driver.find_element(By.XPATH,button2_xpath)
rogin_button_2.click()

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

  • IDとパスの入力欄、「ログイン」ボタンの場所を指定(2~4行目)
  • ID入力欄が入力可能な状態になるまで待機(5~6行目)
  • 入力欄に、事前に設定したIDとパスワードを入力(7~16行目)
  • 「ログイン」ボタンをクリック(17~18行目)

7~16行目の部分は、もうちょっと短く記述することも可能です。

id_pass = [ID_1,ID_2,ID_3,ID_4,PASS]
inputs = [driver.find_element(By.XPATH,f'{id_xpath}[{i}]') for i in range(1,5)]
inputs.append(driver.find_element(By.XPATH,f'{pass_xpath}'))

for input,value in zip(inputs,id_pass):
    input.send_keys(value)

まとめ

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

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

この記事を書いたひと

伴 洋太郎(ばん ようたろう)
伴 洋太郎(ばん ようたろう)税理士
税理士・1級FP。個人事業主や中小法人の税金のお悩みを解決したり、会計処理・税務申告の代行をやったりしています。 freeeが超得意で導入支援の実績多数。一般の方向けのやさしい税務解説記事を書けるのが強みです。詳しいプロフィールはこちら。
記事執筆・監修実績はこちら。
freee認定アドバイザー3つ星
BANZAl税理士事務所
5.0
Based on 32 reviews
powered by Google
Tomofumi NakamuraTomofumi Nakamura
04:46 29 Sep 23
今年から確定申告が必要になり、スポットで相談させていただきました。何も分からない中、丁寧に一つずつ教えてくださいました。さらに、freeeの使い方にも詳しく、どのように設定すれば入力がスムーズになるかまで教えていただき、大変助かりました。年度末にもう一度、相談させていただきたいと思います。
小枝。小枝。
04:57 01 Sep 23
数か月前より顧問契約でお世話になっております。とても柔和な方で、こちらにわからないことがあってもその都度丁寧に教えてくださりました。初回は相談する際に緊張していたのですが、事務所の雰囲気も税理士さんの人柄も良かったため、その後は気苦労なくお話しすることができました。信頼できる税理士さんだと感じています。求められた資料の提出以外の手間ややり取りもなく、とても快適です。
H SH S
12:41 14 Aug 23
スポット相談でお世話になりました。メインでお聞きしたかったインボイス制度への対応についてと、その他用意しておいた細々とした質問に、1時間という短い時間でアドバイスをいただきとても助かりました。また疑問が出てきた時や確定申告のチェックの際にお願いできたらと思っています。
z_- nz_- n
14:08 08 Aug 23
事業主の経理事務をしていますが、初めての相談に伺いました。インボイスを始まるにあたり、今回税理士さん自体も訪ねるのも初めての中、こちらの不安を聞いて頂きながら、御解答頂けました。正直なお話…税理士という職業の方に対して抵抗はある中での相談、今回の税理士の先生に対しては色々と払拭して頂けました。本当に有難うございます。自身で確定申告を実施する為に、今後は単発相談という形でお伺いすると思います。その節は宜しくお願い致します。
s大s大
06:37 10 Jul 23
法人・個人共にお世話になってます。丁寧で親切な対応は、伴さんの人柄にもお顔にも現れていますね。私の周りの方々の助けにもなって頂いているそうでありがとうございます😊新しい情報やITにも強く、頼りになります。ぜひこれからも一緒にお願いしますね^_^
すずきゆきこすずきゆきこ
08:12 29 Jun 23
長年お世話になっていますが、いつもじっくりとこちらの要望をヒアリングして親切に対応してくれるので助かっています。簡単な手続きの場合は詳しく説明の上「自分でやると費用を安くできますよ」と案内してくれて良心的です。忘れた頃に市から届く納税額の通知書なども、わかりにくい部分について問い合わせると快く解説して頂けてとても心強いです。家族で複数名の手続きをお願いしていますが身内であってもお金のことは個々のプライバシーなので、それぞれに細やかに対応してもらえるのもとてもありがたいです。私のような税金のことがさっぱりわからない素人にも気さくに教えてくれるし、年配者にも優しくこまめに連絡を取ったり丁寧に接してくれるのでみんなで頼りにしています。初めて税理士さんに依頼する方にも安心してオススメできます!
oolong choolong ch
07:10 20 Jun 23
とても親切に丁寧に対応してくださいました。わからないことも細かく説明してくださりとても良かったです。
T nknT nkn
04:29 05 Jun 23
今回、法人の確定申告でお世話になりました。分からない事について的確、簡潔にアドバイスをしてくださりました。freeeの入力は、一般的な会計ソフトと違うため使いづらいという声もありますが、freee認定アドバイザーExpartの伴さんのアドバイスは、とても分かりやすいです。税の事、ITの事双方に精通した税理士であり親身になって相談に乗っていただけます。税の事以外にも、最新のトピックやまちづくりの事などアンテナの感度も高く、勉強熱心な人柄に好感が持てます。
鈴木圭鈴木圭
05:56 25 May 23
起業当初からお世話になっております。特に税金に関しての知識が豊富で、何より、提案力にいつも助かっております。いくつもの金額シミュレーションをしてくれて最適解を導いてくれます。また、チャットやzoomで相談できるというのもメリットだと感じております。個人な感想としては、税理士さんは先生という感じが強くて、なかなか気軽に相談という訳にはいかないと思っていましたが、伴さんの人当たりの良さにびっくりしました!おすすめです!
mm yymm yy
04:13 26 Mar 23
遠方からオンラインにて、スポット相談をお願いしました。自己判断での確定申告に不安を覚え、見て頂いたのですがとても親身になって一から教えてくださいました。来年は少し自信を持って提出できそうです。オンラインで気軽に相談できるので、場所にこだわらずよい税理士事務所さんにお願いできるのはとてもいいと思いました。HPにもどのような相談に乗って頂けるのか具体例が書いてあるので安心できます。大変助かりました、またどうぞよろしくお願い致します。
Keisuke KizukiKeisuke Kizuki
02:26 20 Mar 23
個人事業を法人化するべきかどうか、スポット相談させていただきました。とても気さくで話しやすく、わかりやすい言葉で説明していただき、また専門家ならではの視点がとても参考になりました。ありがとうございました。
Mike ShinodaMike Shinoda
05:50 15 Mar 23
2年ほど前からお世話になってます。ホームページ通りの気さくで、誠実なお人柄です。特にシステム導入に強みがあります。会計ソフトFREEの操作スピードは圧巻。速やかに不整合が修正・自動化されます。また、最新のIT技術の導入にも余念がありません。中小企業のDX推進にも力を発揮されるのでは、と思います。私はいつも単発で、かつ突発です。が、快くご対応いただいています。感謝しかありません。個人的には、勉強熱心、ウィットのあるお人柄、チャレンジ精神をリスペクトしています。これからもよろしくお願いします。
ki kiki ki
12:58 27 Jan 23
IT系の得意な税理士さん!!会計ソフトフリーを使用して確定申告をするのにお願いしました。以前は手入力で大変だったのでこちらにお願いしてから負担がかなり減りました。丁寧で親切な方です(^^)税務作業以外の相談では経営の事でも人と違う新しい発想の持ち主の方だなぁと、今からの時代にとてもあった税理士さんだと思います。今後もお世話になるかと思います。よろしくお願い致します!
すみかわあやのすみかわあやの
05:48 23 Jan 23
ありがとうございました。会計ソフトの入力がうまく行かず、またデータの不整合などがあり、困っていました。手早く直してくださり助かりました。他に不備がないかもご確認頂けたので、これで安心して確定申告ができます。事前にメールなどでやり取りしてくださり、私の負担なく作業頂けて助かりました。ホームページからも良い方だというお人柄がわかり、頼むことに不安はなかったのですが、そうは言っても会計ソフトというお金が絡む大事な事を依頼するので、お会いするまでは緊張しましたが、zoomのビデオ通話でお話して、優しい話しやすい、そして信頼できる方で安心しました。またよろしくお願いいたしますm(_ _)m
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