반응형
프로젝트 상에서 사용되는 파일은 (금융사에서 전달하는 Mail 파일)은 HTML 로 제공되고 있습니다.
하여 해당 HTML 파일을 열고, 제가 원하는 xlsx 로 다운받는 Function 을 찾아 클릭해야 합니다.
이를 위해 selenium 을 사용하였고, Chrome 보다는 가벼운 Firefox 를 사용하였습니다.
ford_html = glob2.glob('/data/mail/*.html')
ago_date = datetime.date.today() - timedelta(days=30)
down_dir = "/data/mail/" ## pvc 경로
binary = FirefoxBinary('/opt/firefox/firefox')
매월 새로운 파일만을 작업하기 위해 시간을 설정하였고, glob2 를 통하여 여러 파일을 리스트 형태로 조회하는데 사용합니다.
opts = FirefoxOptions()
opts.add_argument("--headless")
opts.add_argument("--no-sandbox")
opts.add_argument("--disable-dev-shm-usage")
opts.set_preference("browser.download.folderList", 2)
opts.set_preference("browser.download.manager.showWhenStarting", False)
opts.set_preference("browser.download.dir", down_dir)
fox = webdriver.Firefox(options=opts,executable_path='/usr/local/bin/geckodriver',firefox_binary=binary)
firefox 를 사용하기 위한 webdriver 파일인 geckodriver 를 사용하였고, EKS Pod 에서 실행될 예정이기에 headless 옵션과 여러가지 옵션 값을 사용 하였습니다.
for i in ford_html:
if int((os.path.basename(i).split("_")[-1]).split(".")[-2]) < int(str(ago_date.strftime("%Y%m%d"))):
print(int((os.path.basename(i).split("_")[-1]).split(".")[-2]))
continue
위 glob2 를 사용하여 나온 list 결과 값 중 실제 필요한 파일을 조건처리하여 작업되고 있습니다.
else:
fox.get('file://'+i)
fox.find_element(by=By.XPATH, value="//*[@id=\"account\"]/div[1]/div/div/ul/li[2]").click()
fox.find_element(by=By.XPATH, value="//*[@id=\"div_이용\"]/div/div[1]/ul/li[3]/a").click()
fox.execute_script("save2Xls_new('usage')")
실제 조건에 해당되는 값은 파일을 Open 하고, html 상에서 내가 필요한 button 값을 찾아 Click 하는 방법입니다.
Div 요소를 찾아 button 이 동작할때 작동하는 javascript function 을 호출합니다.
Code 가 궁금하시다면 하단의 링크를 참고 부탁드립니다.
https://github.com/foonsoo/project/tree/master/save_money/python/logic/file_craw
반응형
'IT Information > DevOps' 카테고리의 다른 글
Istio In Action - (Introducing the Istio service mesh) 1.1 (0) | 2023.04.04 |
---|---|
개인 프로젝트 리뷰 - Pandas, Pymysql (0) | 2022.10.30 |
개인 프로젝트 리뷰 - MailDownload (0) | 2022.10.30 |
개인 프로젝트 리뷰 - Architecture (0) | 2022.10.30 |
AWS 중요한 알림을 위한 구성 (Security Group , IAM , LB 등등) (0) | 2021.04.09 |