반응형
Xpath 검색 시 문제 사항
나라장터 사이트에서 검색을 통해 들어간 페이지에서 text를 가져오려고 하는 파이썬 셀레니움(selenium)을 실행하는 코드를 작성하였다. 하지만 xpath를 통해 검색하였으나 아래와 같은 에러메세지와 함께 코드가 동작되지 않았다.
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
내가 해결한 방법을 공유하겠다. 공유하기에 앞서 동일한 에러메세지라도 상황에 따라 내 해결책이 적용되지 않을 수 있음을 감안하길 바란다.
해결 코드>>
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.g2b.go.kr/index.jsp')
search_box = driver.find_element_by_xpath('//*[@id="bidNm"]')
search_box.send_keys('품질')
search_date = driver.find_element_by_xpath('//*[@id="setMonth1_1"]').click()
search_start = driver.find_element_by_xpath('//*[@id="searchForm"]/div/fieldset[1]/ul/li[4]/dl/dd[3]/a').click()
driver.switch_to.frame('sub')
driver.switch_to.frame('main')
elem = driver.find_element_by_xpath('//*[@id="resultForm"]/div[2]/table/tbody/tr[1]')
print(elem.text)
문제원인>>
그림1에서 개발자 모드로 화면의 코드를 살펴 보자. HTML 문서안에 여러개의 <frame></frame> 으로 묶여 있다. 프레임 마다 새로운 head와 body가 존재했다. 그래서 내가 원하는 text까지 가기 위해서는 아래 코드 처럼 2번의 프레임 이동을 통해서 원하는 xpath 검색이 실행 되었다.
driver.switch_to.frame('sub')
driver.switch_to.frame('main')
xpath의 위치를 확인하고 frame안에 있는지 확인뒤 해당 frame으로 이동 후에 실행 하여야 한다.
반응형
'파이썬(Python) > 웹스크롤링' 카테고리의 다른 글
[Python] yfinance 함수 사용법 정리 (코스피,테슬라) (0) | 2021.11.02 |
---|---|
[Python] BS4로 네이버금융 종목분석-재무분석 값 가져오기 (0) | 2021.10.27 |
파이썬(Python) Selenium Click() 동작이 안될 때 (7) | 2021.03.31 |
파이썬 Selenium 페이지 로딩 대기하는 방법 (0) | 2021.01.24 |
셀레늄(Selenium) id, name, xpath, link_text, partial_link_text, tag_name, class_name, css_selector 로 엘리먼트(elements) 찾기 및 실습 (0) | 2021.01.23 |