【お仕事自動化】pythonでHPからcsvをDLして、データフレーム化する②【パスワードが必要なページにログインする】

pythonLOGO python
記事内に広告が含まれています。



今回はChromeDriverでパスワードが必要なページへのアクセスし、例として「エキスパ」のログインからCSVダウンロードのボタンを押してダウンロードするところまでの記事です。

この記事は

【お仕事自動化】pythonでHPからcsvをDLして、データフレーム化する①【準備編】
必要なモジュールのインストールからchromedriverの起動までexcelではなくpythonに取り込んで、分析したい時ってありますよね。そんな方に向けた記事です。※jupyter labのインストール等は各自でお願いします。事前にイン...

の続きで、実際にChromeDriverを起動して、各HTML要素の操作の仕方について書いています。

上記の記事でまずはChromeDriverの起動までできたかと思います。

まずは、復習としてChromeDriverの起動を行います

# クロムを起動

path = os.getcwd() # pythonプログラムが保管されているフォルダパスを取得
Exefile= path + "\\chromedriver.exe"

driver = webdriver.Chrome(executable_path = Exefile)
driver.implicitly_wait(3)

次はログインIDとパスワードを変数として格納します。

USER = "ゆーざーあいでぃー"
PASS = "ぱすわーど"

ログインするサイトへアクセスします。

# ログインページするサイトへアクセス
url_login = "https://exp-t.jp/account/login_operator/expa"
driver.get(url_login)
time.sleep(3)
print("ログインページにアクセスしました")

それぞれの入力フォームにログインIDとパスワードを入力します。

# テキストボックス入力
elem = driver.find_element_by_id('MasterOperatorOperatorCode')
elem.clear()
elem.send_keys(USER)
elem = driver.find_element_by_id('MasterOperatorOperatorPassword')
elem.clear()
elem.send_keys(PASS)
print('フォームを送信')

ここではidを指定して入力するフォームを特定してUSERとPASSを入力しています。

このidの特定の仕方は、Chromeでログインしたいページを開いてF12を押してデベロッパーツールを開きます。

次に下画面の赤丸部分を押して、入力したいボックスを選びます。

するとその部分のHTML要素が分かります。

今回はこのid要素で入力する場所を特定しています。

その他に

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

を指定して、操作をしたいHTML要素を特定する事ができます。詳しくはこちら

どうにもうまくいかないときは、xpathを指定するのが一番やりやすいです。

xpathを特定するのは、知りたい要素を右クリックして

Copy→Copy Xpath

等で指定するのが良いと思います。

入力を完了させた後は、ログインボタンを押します。

このボタンを押すというのもHTML要素を特定して、ボタンを押すという操作になります。(ここでは”name”を指定してボタンを押しています。)

# 入力したデータをクリック
time.sleep(3)
frm = driver.find_element_by_name('exec')
time.sleep(3)
frm.click()
print("情報を入力してログインボタンを押しました")

コマンドは

.click()

を使用しています。

また、入力の合間合間でHTMLの読み込みの時間があるため、

time.sleep(3) # 3秒操作を待つ

で、プログラムが先に動いてしまわないようにしています。

その後は、手動で操作する事をイメージして、クリックや入力を繰り返している流れです。

ログインが成功した後は、ダウンロードボタンのあるページに直接飛んで良いのでこのようなボタンがあるページに飛んで

# ウェブサイトへのアクセスアクセス例
url="https://hogehoge"
time.sleep(1)
driver.get(url)
print(url,":アクセス完了")

としてcsvダウンロードのボタンのidやname,XPath等を特定してクリックするという操作は変わりません。

# csvダウンロードボタンを押すプログラム例
time.sleep(3)
frm = driver.find_element_by_name('csvdl')
time.sleep(3)
frm.click()
print("ボタンをクリックしてCSVのダウンロードを開始する")

こんな感じ。

次回は、ダウンロードしたcsvをPythonにデータフレームとして取り込む方法を書きます。よろしく。

続きはこちら





コメント

タイトルとURLをコピーしました