인프런 커뮤니티 질문&답변

쥰쓰님의 프로필 이미지
쥰쓰

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

썸네일 클릭하여 곡 정보 페이지로 이동, url 수집 후 멜론 차트로 돌아가기

셀레늄 실습중 문의

해결된 질문

작성

·

680

0

수업을 듣고 다른 사이트로 실습을 해보려고 하는데,

jsp로 만들어진 공공기관 사이트는 뭔가 잘 안먹히는 모습니다.

아래 사이트의 테이블 정보를 가져오고 싶은데, 얘네들은 클릭해도 주소가 변경되는것도 없고 아래와 같이 table이 들어있는 상위 class 태그를 찾아서 정의하고, 거기에서 table의 class명을 넣고 tbody, tr까지 찾아들어가도록 코딩을 했는데 table의 class명이 없다고 에러가 뜹니다.

이런 사이트의 table내 정보는 어떻게 가져올 수 있고,

테이블에 있는 원자재를 클릭해서 넘어가는 페이지는 어떻게 찾아갈 수 있나요?(XPATH, LINK_TEXT해도 먹히지 않아요..)

https://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp


url = "http://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp"

driver.get(url)
time.sleep(2)

# driver.find_element(By.LINK_TEXT,"통계정보").click()
# time.sleep(2)
# driver.find_element(By.LINK_TEXT,"원자재가격정보")
# time.sleep(2)

class1 = driver.find_element(By.CLASS_NAME,"iframeLayout01")

#테이블은 위와 같이 <table>안에 <tbody>, <tbdoy>안에 <tr>, <tr>안에 <td> 순으로 포함되어 있다.


table_content = class1.find_element(By.CLASS_NAME,"data_print")
tbody = table_content.find_element(By.TAG_NAME,"tbody")
rows = tbody.find_elements(By.TAG_NAME,"tr")
for index, value in enumerate(rows):
    body=value.find_elements(By.TAG_NAME,"td")[0]
    print(body.text)

답변 1

0

김플님의 프로필 이미지
김플
지식공유자

일단, jsp 때문에 잘 안되는게 아닙니다.
위 사이트에는 iframe이 포함되어 있는데 그럴경우에는 ifame으로 전환해서 내용을 가져오는 작업을 해야합니다.

페이지 소스를 보면,
<iframe id="iname" width="860" scrolling="no" height="650" frameborder="0" title="원자재가격정보" name="iname" src="https://www.koreapds.com/wacs/wms/kpds_price.php"></iframe>
src에 있는 https://www.koreapds.com/wacs/wms/kpds_price.php 에 접속해보시면 모든 정보가 있습니다.

driver.switch_to.frame("iname")

이렇게 전환을 하고 필요한 부분을 가져오는 작업을 하시면 됩니다.

그리고 코드에서

class1 = driver.find_element(By.CLASS_NAME,"iframeLayout01")

이 부분은 iframe 바깥부분이라 iframe 전환을 하고나면 찾을 수가 없는 부분이 됩니다. 그리고 찾을 필요가 없는 부분이 되는거죠.

iframe 관련 부분은 추후 업데이트에서 다룰 예정입니다.

쥰쓰님의 프로필 이미지
쥰쓰

작성한 질문수

질문하기