#Web操作
・Webアプリなどから、業務用の処理やデータを取り出す。
・同名のデータは事前に削除しておく。
##Celenium+Microsft EddgeでのWebからデータをDL
###やる事
1.eddgeのWebdriverをDLしてくる。
2.作成コードの下位フォルダへ格納する。
例:コードにも反映する
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などのアクションなども指定して実行させることができる。
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()