selenium 크롤링을 이용한 학점 계산기

chaean·2023년 3월 22일
0

크롤링

목록 보기
1/3

이것저것 공부해보던 중 크롤링에 관심이 생겨 간단한
selenium을 이용한 학점계산기를 만들어보면서 시간을 많이 잡아먹었던 부분들을 정리해보려고 한다.

1. 팝업창 제어

 try:
        popup = driver.window_handles
        for i in popup :
            if i != popup[0] : #리스트의 첫 값은 팝업창이 아니라 윈도우창!!!!!!
                driver.switch_to.window(i)
                driver.close()
        driver.switch_to.window(popup[0])
    except:
        pass

try / except문을 통해 팝업이 있다면 닫고 아니면 pass하는 코드다.
driver.window_handles를 통해 팝업들을 popup변수에 담아서 저장한다.

★ 중요한 점은 리스트의 첫 값은 팝업창이 아닌 윈도우창이라는 것.

마지막에 driver.switch_to.window(popup[0])을 실행시켜줘야 정상적으로 돌아감

2. frame 제어

frame때문에 시간이 너무 많이 걸렸다 진짜...
frame은 페이지 안에 또 다른 페이지를 넣는 것이라고 생각하면되는데
frame 내부에 들어가지 않은 채 요소를 받아오려고 하면 요소를 찾지 못한다는 오류가 발생한다

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="RF"]"}
  (Session info: chrome=111.0.5563.65)

진짜 오늘 이것만 50번은 본것같다...

driver.switch_to.frame(driver.find_element(By.NAME, "BBF"))

driver.switch_to.frame 함수를 통해 frame내부로 들어간 뒤 찾아야함!

다 찾고 원래로 돌아가려고 한다면

driver.switch_to.default_content()

다 찾고 원래로 돌아가려고 한다면 위에 코드를 사용하면된다

★ 여러개의 frame으로 들어간다해도 위 코드를 실행시키면 아예 처음으로 돌아간다!

번외 3. tkinter

파이썬에 내장되어 있는 GUI모듈이다.
처음 다뤄보는 모듈이라 구글링하면서 하느라 시간이 좀 걸렸다

  runBtn = Button(window, text="실행", height=3, width=10, command=run) 

버튼을 만들고 실행할 함수를 command에 달아서 써먹는것같다

'
'

selenium은 동적인 페이지때문에 사용하지만 속도가 느린편이라
requests / beautifulsoup와 같은 라이브러리와 같이 사용하는것이 좋다고함.
requests / beautifulsoup는 동적인 페이지를 처리하기 힘들기 떄문!!

'
'
'
'
request url / cookie를 활용하면 서버와 직접 통신도 가능하다고 하던데 공부해봐야겠다!

profile
컴퓨터공학 학부생

0개의 댓글