Web操作
・Webアプリなどから、業務用の処理やデータを取り出す。
・同名のデータは事前に削除しておく。
Celenium+Microsft EddgeでのWebからデータをDL
やる事
1.eddgeのWebdriverをDLしてくる。
2.作成コードの下位フォルダへ格納する。
例:コードにも反映する
python
browser = webdriver.Edge("./driver/msedgedriver.exe")
サンプルコード
サイトにログイン後、データをDLして更新する。
概要としては、
browser = webdriver.Edge("./driver/msedgedriver.exe")を用い、
el = browser.find_element_by_name('txtDomainName') などのように、エレメントを指定し
el.send_keys('**********') でテキストなどを入力したり
browser.find_element_by_id("mnuDataDownload").click()でクリックで大体は事足りると思える。
jsなどのアクションなども指定して実行させることができる。
python
from selenium import webdriver
from datetime import datetime, date, timedelta
import time
from glob import glob
import os
from tkinter import messagebox
from selenium.webdriver.support.select import Select
browser = webdriver.Edge("./driver/msedgedriver.exe")
browser.implicitly_wait(10) # seconds
browser.get('https://........ログインしたいサイト')
サイト表示後
ログインするためにはIDとPASSを入力すると思います。
こちらに関しては、eddgeですと、
1.サイト上で右クリック
2.検証
3.色々とカーソルを動かして、htmlのどこが関わるかを調べる。
# ドメイン入力
el = browser.find_element_by_name('txtDomainName')
el.send_keys('*******')
# ログインID入力
el = browser.find_element_by_name('txtUserName')
el.send_keys('**********')
# パスワード入力
el = browser.find_element_by_name('txtPassword')
el.send_keys('*********')
# Loginボタンを押す
# browser.execute_script("javascript:__doPostBack('btnLogin','')")
browser.execute_script("__doPostBack('btnLogin','')")
browser.find_element_by_id("mnuDataDownload").click()
dropdown = browser.find_element_by_id('ctl00_ContentPlaceHolder1_mnuDataDownload_drpGroup')
select = Select(dropdown)
select.select_by_value('-1')
dropdown = browser.find_element_by_id('ctl00_ContentPlaceHolder1_mnuDataDownload_drpFileName')
select = Select(dropdown)
select.select_by_value("/User/10438/Private/*******.DataDownload")
# 日付指定
browser.find_element_by_id("ctl00_ContentPlaceHolder1_mnuDataDownload_imgCalendarStart").click()
browser.find_element_by_id("ctl00_ContentPlaceHolder1_mnuDataDownload_calDateStart_today").click()
browser.find_element_by_id("ctl00_ContentPlaceHolder1_mnuDataDownload_btSubmit").click()
# Dlデータ事前削除
folda_path =r'C:\Users\*****\Downloads'
file = glob(r"C:\Users\******\Downloads\*****.csv")
if file:
filepath =file[0]
print(filepath)
os.remove(filepath)
print("できたよ!")
# DL_Start
time.sleep(3)
browser.find_element_by_id("ctl00_ContentPlaceHolder1_lnkDownload").click()
# webブラウザ閉じる
time.sleep(3)
browser.close()
browser.quit()