프로그래밍/파이썬(Python)

파이썬 자동화 - 엑셀 파일을 읽어 검색

&+&& 2018. 8. 7. 01:02

 

[프로그래밍/파이썬(Python)] - 파이썬 자동화 - 인터넷 익스플로러 창 열고 검색하기

  이전 글에서 연결된다. 지난 번에 기본적인 함수는 만들어 놨고 엑셀에서 필요한 셀들을 읽어서 순서대로 검색하는 부분까지 테스트했다.

1. 소스 코드

# xls 파일 : searchList.xlsx 
# excel 파일 읽고 검색 창에 입력 

import openpyxl  

searchList = []  

# 엑셀 파일 열기 
wb = openpyxl.load_workbook('searchList.xlsx')  

# 현재 Active Sheet 얻기 
#ws = wb.active  
# 또는 정해진 sheet 열기 
ws = wb.get_sheet_by_name('Sheet1')  

for r in ws.rows:     
  # 행 인덱스 저장     
  row_index = r[0].row     
  searchList.append(r[1].value)      
  
while True:     
  try:         
    searchList.remove(None)     
  except 
    ValueError:         
    break  
    
hwndmain = None 
hwndmain = checkWindow('NAVER - Internet Explorer')  
if hwndmain == False:     
  createIE('http://www.naver.com')     
  time.sleep(2)     
  hwndmain = checkWindow('NAVER - Internet Explorer')      
  
time.sleep(2)  
selectAppFront(hwndmain)  
time.sleep(1)  
try:     
  for i in searchList[1:]:         
    locationXY = None         
    while (True):             
      if win32gui.GetWindowText(hwndmain) == 'NAVER - Internet Explorer':
        locationXY = pyautogui.locateOnScreen('naversearchtext1.png', region=(0,0,1000,1000))
        locationX, locationY = locationXY[0]+naversearchMargin1[0], locationXY[1]+naversearchMargin1[1]
        break             
      else:
        locationXY = pyautogui.locateOnScreen('naversearchtext2.png', region=(0,0,1000,1000))
        locationX, locationY = locationXY[0]+naversearchMargin2[0], locationXY[1]+naversearchMargin2[1]
        break         
    
    addToClipBoard(i)         
    pyautogui.click(locationX, locationY)         
    pyautogui.hotkey('ctrl', 'a')         
    pyautogui.press('del')         
    pyautogui.click(locationX, locationY)         
    pyautogui.hotkey('ctrl', 'v')         
    pyautogui.press('enter')         
    time.sleep(1)          
except Exception as e:     
  print(e)

  검색이 정상적으로 이루어졌다면 결과를 엑셀 파일에 다시 기록하는 내용이 추가되어야 할 것 같다. 

  추가적으로 time.sleep으로 지연 처리를 했는데, 다른 방식으로 iexplorer가 로딩을 끝마친 상태를 확인해야 한다.

  원래 자동화하려던 작업이 단순한 반복작업이었기 때문에 위 두 가지 내용이 완료되면 생각했던 기능은 대부분 구현이 가능할 것 같다.

 

  엑셀 검색어 마지막 apple까지 검색을 끝마친 모습이다. 그런데 만들다 보니 원래 생각했던 용도 외에 다른 용도가 더 유용할 것 같다는 생각이...