ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Crawliing Project _ 회고_ 어려웠던 부분(1) iframe안으로 이동]
    About_Datascience/Project 2023. 1. 24. 18:02

    이번 프로젝트에 대한 회고는 어려웠던 부분과 느낀점으로 나누어 작성하려 한다. 

     

    1. iframe으로 이동하여 크롤링

    # 메일 내용 입력 프레임으로 옮기기
    chrome.switch_to.frame(chrome.find_element(By.XPATH, '//*[@id="content"]/div[3]/div/div[2]/div/div[3]/iframe'))
    # 다시 부모 프레임으로 옮기기        
    chrome.switch_to.default_content()

    마무리 단계에서 네이버 메일 본문을 작성하는 위치를 평소와 같이 CSS_SELECTOR 를 이용하여 찾았다. 

     

    네이버 본문 크롤링 하기 위해 위치를 찾았다.

     

    class 이름도 대놓고 "workseditor-content" 라고 적혀있길래 '역시 네이버 ! 이렇게 편하고 직관적인 이름으로 명시를 해뒀구나 ! ' 라는 즐거운 생각을 가지고 코드를 짰지만 위치를 찾지 못했다.. CSS_SELECTOR 뿐만 아니라 CLASS_NAME , XPATH 등 모든 방법을 동원해도 메일 작성 본문을 찾지 못했다. 팀원들과 머리를 싸매고 계속 고민하던 중 드디어 원인을 발견하였다.

     

    찾고자 하는 위치가 iframe 안에 들어있었다.

     

    원인은 바로.. 찾고자하는 div 박스가 iframe 안에 들어 있던 것이었다.. 

    원인을 알았으니 iframe 안으로 들어가는 방법을 폭풍 구글링을 하였다.

    그 결과 .switch_to.frame을 통해 iframe 안으로 들어갈 수 있었고, iframe 안으로 들어갔으면 꼭 다시 원래 있던 곳으로 나와야 하는데  다시 나올 때는 .switch_to.default_content()를 통해 원래 위치로 돌아올 수 있었다. 

     

     

     

     

    >> switch_to.frame을 구글링 하며 알게된 또 다른 TMI 정보 ! <<

     

    chrome.switch_to.window()

     

    이 코드는 셀레니움을 이용할 때 다른 창이 열릴 때 활성 탭을 변경해주는 코드이다.

    이 구문을 사용할 때에는 

     

    print(chrome.window_handles)

     

    window_handles를 이용하여 결과 값을 확인해보면 알 수 없는 문자들이 리스트 형태로 반환되는 것을 알 수 있다. 

     

    chrome.switch_to.window(chrome.window_handles[-1])

     

    예를 들어 열린 창이 2개면 리스트의 마지막 값이 가장 최근에 열린 창임을 유추할 수 있다. 

    따라서 [-1] 인덱스를 이용하여 가장 마지막 값으로 활성 탭을 변경해줄 수 있다. 

    다시 원래 창으로 이동하기 위해서는 인덱스 값을 [0]으로 바꿔주면 다시 원래 창에서 작업을 할 수 있게 되는 것이다! 

    이번 프로젝트에서는 쓰이지 않았지만 앞으로 다양한 부분에서 유용하게 쓰일 수 있을 것 같다 ! 

     

     

Designed by Tistory.