반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 가상환경설치
- 네이버부동산크롤링
- 날짜 정규식
- pycdas.exe
- pycdc.exe
- venv 설치
- 네이버 로그인 영수증 해결
- uipath 입문
- 커머스API
- Selenium 셀렉터잡기
- UiPath
- vscode venv 설치
- Uipath 설치방법
- 파이썬 네이버 로그인
- Element is not clickable at point
- 네이버커머스API
- 파이썬 환경설정
- Uipath 기초
- 네이버매물크롤링
- 네이버 로그인 하기
- 파이썬네이버부동산
- 네이버 로그인 캡챠해결
- Python
- 파이썬 가상환경 설치방법
- selenium
- pywinauto 윈도우제어
- pywinauto 윈도우
- pywinauto
- 왕초보 파이썬 실행
- 파이썬 가상환경 설치
Archives
- Today
- Total
콘솔워크
[selenium] 웹에서 파일을 다운 받은 후 이름을 변경하는 함수 본문
반응형
import shutil
from selenium.webdriver.common.by import By
# 폴더내 파일 전체 삭제
def delete_all_files(self, download_path):
if os.path.exists(download_path):
for file in os.scandir(download_path):
os.remove(file.path)
return 'Remove All File'
else:
return 'Directory Not Found'
# 경로의 파일 갯수 체크
def dir_search(self, download_path):
file_len = len(os.listdir(download_path))
print('파일갯수: ' + str(file_len))
return file_len
# 다운로드
def download_excel(self, download_path):
driver = self.driver
# 폴더가 없으면 생성
if os.path.isdir(download_path) == False:
os.mkdir(download_path)
else:
print(f'이미 폴더가 있습니다.')
# 폴더안에 이미 존재하는 파일 삭제
print(f'{self.delete_all_files(download_path)}')
# 폴더안의 파일 갯수 (다운로드 확인에 사용)
before_file_len = self.dir_search(download_path)
# 다운로드 버튼 클릭 (실패 시 무한반복)
downloaded = False
while downloaded == False:
try:
# 다운로드 클릭
download_button = driver.find_element(By.CSS_SELECTOR, 'div[onclick*="javascript:doExcelDownload()"]')
download_button.click()
# 확인 클릭
ok_button = driver.find_element(By.CSS_SELECTOR, '#button-1006')
ok_button.click()
downloaded = True
except Exception as e:
downloaded = False
# 다운로드 완료 여부를 5초에 한번씩 체크
after_file_len = self.dir_search(download_path)
while before_file_len == after_file_len:
print('대기중...')
after_file_len = self.dir_search(download_path)
time.sleep(5)
try: # 가장 최근에 다운받은 파일 이름을 변경
new_file_name = max([download_path + "\\" + f for f in os.listdir(download_path)],key=os.path.getctime)
shutil.move(new_file_name,os.path.join(download_path,r"myfile.xlsx"))
new_file_name = download_path + "\\" + r"myfile.xlsx"
print(f'{new_file_name}')
except Exception as e:
print(e)
self.log_append(f'{download_path} 파일 찾기 실패')
print('파일명 변경 실패')
return new_file_name
일정 시간에 한번씩 실행하기 위해 제작한 코드
반응형
'프로그래밍 > python' 카테고리의 다른 글
숫자 나누기, 나머지 구하기, 그리고 divmod() (/, %, divmod) (0) | 2022.07.20 |
---|---|
[selenium] Select로 option 쉽게 선택하기 (1) | 2022.07.19 |
파이썬 추상클래스 정리 (0) | 2022.07.18 |
str int 형변환 에러 invalid literal for int() with base 10:'' (0) | 2022.07.15 |
파일 경로가 적혀있는 목록(list)에서 경로를 확인해서 파일이 없을 경우 목록에서 제외하는 함수 (0) | 2022.07.14 |