플그래밍/파이써언

[파이썬 & 크롤링] Selenium - iframe 내부 접근 법

훗티v 2023. 8. 4. 20:59
728x90
반응형

웹페이지상으로는 동일한 페이지 같지만 iframe과 같이 다른 곳에서 컨텐츠를 불러오는 경우에는 일반적인 방법으로 요소를 찾을 수 없습니다

해당 요소를 찾을 수 없다는 NoSuchElementException와 같은 오류가 발생하기도하죠

이 경우 selenium을 iframe으로 접근시켜줘야 하는데요

네이버 증권 재무제표에 접근해보면서 알아볼께요

 

종목분석은 네이버 증권 페이지이지만 그 밑으로는 iframe 컨텐츠입니다

"재무분석"과 같은 요소는 selenium에서 찾을 수 없다고 나옵니다

아래 코드로 selenium이 iframe으로 접근하도록합니다

id를 통해 접근하고자하는 iframe을 찾고

switch_to.frame을 통해 iframe에 접근합니다

iframe = driver.find_element(By.ID, "coinfo_cp")
driver.switch_to.frame(iframe)

 

정상적으로 클릭까지 진행되는 모습

 

전체코드는 다음과 같습니다

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

option = Options()
# option.add_argument('--headless')
option.add_argument('--disable-gpu')
# option.add_argument('--window-size=1920,1080')
option.add_argument('--start-maximized')

service = Service()
# service.creation_flags = CREATE_NO_WINDOW
driver = webdriver.Chrome(service=service, options=option)
driver.get('https://finance.naver.com/item/coinfo.naver?code=086520')

iframe = driver.find_element(By.ID, "coinfo_cp")
driver.switch_to.frame(iframe)
link_element = driver.find_element(By.LINK_TEXT, "재무분석")
link_element.click()

 

 

 

 

 

 

반응형