개발/python

셀레니움 크롤링 값이 안나올 때(text)(frame)

북치기_개발모드 2022. 4. 6. 18:41
반응형

셀레니움에서 크롤링 코드 맞게쳤는데도 값이 안나오면 프레임이 있는지 확인해보고 바꿔줘야함.

셀레니움이 참 멍청한건지 프레임이 다르면 값을 가져오질 못하더라고...

그래서 프레임을 변경해줘야한다.

# 메인프레임변경해주기 
driver.switch_to.frame('coinfo_cp')

 

예시) 네이버 금융 재무재표 가져올 때

기존 코드

from bs4 import BeautifulSoup  
from selenium import webdriver

driver = webdriver.Chrome('C:\chromedriver99.exe')
url = 'https://finance.naver.com/item/coinfo.naver?code=000660'

driver.get(url)

# 유보율 xpath
ubo = "/html/body/div/form/div[1]/div/div[2]/div[3]/div/div/div[14]/table[2]/tbody/tr[13]/td[7]/span"

ubo_result = driver.find_element_by_xpath(ubo)

print(ubo_result.text)

변경

from bs4 import BeautifulSoup  
from selenium import webdriver

driver = webdriver.Chrome('C:\chromedriver99.exe')
url = 'https://finance.naver.com/item/coinfo.naver?code=000660'

driver.get(url)

# 메인프레임변경해주기 
driver.switch_to.frame('coinfo_cp')
# 켜질 때 까지 최대 10초 기다린다.
driver.implicitly_wait(10)


# 유보율 xpath
ubo = "/html/body/div/form/div[1]/div/div[2]/div[3]/div/div/div[14]/table[2]/tbody/tr[13]/td[7]/span"

ubo_result = driver.find_element_by_xpath(ubo)

print(ubo_result.text)

값 잘나옴

반응형