Pythonでe-Taxソフト(WEB版)へログインするためには、次のような作業が必要です
- e-Taxソフト(WEB版)をブラウザで開く
- 「ログイン」ボタンをクリックする
- IDを4桁ごとに分けて入力する
- パスワードを入力する
- 「ログイン」ボタンをクリックする
これらを自動化するプログラムを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の開発に取り組む場合は、実行しましょう。
でググればいくらでも情報が出てきますので、参考にしてください。
ひとまず、「Anaconda」をインストールしておけば間違いはないでしょう。Anacondaとは、Pythonの開発に必要なものをひとまとめにしたパッケージのことです。
ライブラリをインストールしておく
「ライブラリ」とは、ある特定の分野に関する処理を行うプログラムをひとまとめにしたもののことです。
日付けや時刻に関する処理をまとめた「datetime」、Excelファイルを操作する処理をまとめた「openpyxl」など、数多くのライブラリがPythonで使用できます。
またライブラリには、Pythonのインストール時に同時にインストールされる「標準ライブラリ」と、後から追加しなければいけない「外部ライブラリ」とがあります。先述の「datetime」は標準ライブラリで、「openpyxl」は外部ライブラリです。
今回の開発する自動ログインプログラムでは、以下の2つの外部ライブラリを使用します
- selenium
ブラウザ操作に関する機能をまとめたライブラリ - webdriver_manager
seleniumで使用するブラウザの管理に関する機能をまとめたライブラリ
過去にこれらを使ったことがない場合には、インストールしておきます。
インストール方法については
でググればいくらでも情報が出てきますので、参考にしてください。
# 外部ライブラリをインストール
pip install selenium
pip install webdriver_manager
e-TaxAPをダウンロードしておく
e-Tax(WEB版)をChromeで正常に動作させるためには、拡張機能「e-Tax AP」を利用可能な状態にしておく必要があります。
自動化するブラウザでe-TaxAPを有効化するために、拡張機能のファイル(拡張子.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行目)
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行目)
ボタンの場所を指定する方法
ログインボタンの場所を指定する方法はいくつかあるのですが、ここでは「XPath」という記法によって表現しています。XPathは、HTMLなどで記述された内容のなかから特定の箇所を指定するための言語です。
e-Tax側の仕様変更によってログインボタンの場所が変わる可能性もあります。その場合は、コード上記コード内のXPathも変更しなければなりません。
Chromeの場合、つぎの方法でXPathを簡単に取得できます。
- Chromeのデベロッパーツールを開く(Windowsの場合「F12」キーを押す)
- XPathを取得したい場所を右クリックする
- 「検証」を選択する
- デベロッパーツール内のハイライトされている部分を右クリックする
- 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が超得意で導入支援の実績多数。一般の方向けのやさしい税務解説記事を書けるのが強みです。詳しいプロフィールはこちら。
記事執筆・監修実績はこちら。
最新記事一覧
- 2024年11月18日-税理士業のことファクタリング業者の比較記事を監修しました
- 2024年10月1日-税理士業のこと不動産の税に関する記事を監修しました
- 2024年8月26日-税理士業のこと税理士の探し方に関する記事を監修しました
- 2024年6月14日-税理士業のこと経理職への転職に関する記事を監修しました