-
[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]으로 바꿔주면 다시 원래 창에서 작업을 할 수 있게 되는 것이다!
이번 프로젝트에서는 쓰이지 않았지만 앞으로 다양한 부분에서 유용하게 쓰일 수 있을 것 같다 !
'About_Datascience > Project' 카테고리의 다른 글
[Crawliing Project _ 회고_ 어려웠던 부분(2) 이미지 복사 후 삽입] (0) 2023.01.24 [Crawling Project_급등된 주가에 대한 기사 분석 및 자료 메일링 서비스_최종코드] (0) 2023.01.24