url = 'https://prstaff.sogang.ac.kr/prstaff/index.html'
driver.get(url)
sleep(1)
driver.find_element(By.XPATH, '/html/body/div/ul/li[1]/a').click()
위의 간단한 코드가 작동이 안되었다. 원인은 " Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/ul/li[1]/a"} " 라고 한다. 한마디로 나는 로그인을 눌러달라고 하였는데 로그인 버튼이 어딨는지 모른다는 것이다. 친절하게 XPATH 도 적어줬건만! 바보!
이를 통해 iframe 이라는 것에 대해 알게 되었다. iframe 이란, 페이지 안에 다른 URL 로 접근하는 다른 창(?) 같은 느낌이다. 살펴보니 하늬가람 페이지는 본 페이지 안에 'tool_bar' 라는 class 의 iframe 을 두고 있었다.
이걸 알았다면 문제는 쉽게 풀려야 한다. 근데 풀리지 않았다. 왜냐? 대부분 iframe 에 접근할 때는 "driver.switch_to.frame()" 이라는 명령어를 통해 괄호 안에 id 값을 써주기 때문이다. 하지만 우리의 하늬가람 페이지에는 class 의 값만 있다.
url = 'https://prstaff.sogang.ac.kr/prstaff/index.html'
driver.get(url)
sleep(1)
iframe = driver.find_element(By.XPATH, '//*[@id="header"]/div/div[1]/iframe')
driver.switch_to.frame(iframe)
driver.find_element(By.XPATH, '/html/body/div/ul/li[1]/a').click()
그래서 위에 처럼 iframe 을 먼저 찾아주고 그 다음에 접근하였더니 원하는 로그인 창이 나왔다. 짜릿해
'cs > 크롤링' 카테고리의 다른 글
[크롤링] 목록 범위 설정하고 동적페이지에서 범위 찾기 (0) | 2023.03.27 |
---|---|
[크롤링] 하늬가람 페이지 크롤링해보자 (0) | 2023.03.20 |
[크롤링] selenium 안녕 ,,? (0) | 2023.03.20 |
[크롤링] 네이버 홈화면의 메뉴를 가져와보자 (0) | 2023.03.13 |
[크롤링] 할리스 매장 위치 정보 크롤링 해보기 (pandas / del[:]) (0) | 2023.03.08 |