본문 바로가기
Python

[Python] 파이썬 셀레니움 iframe 찾기

by 퍼포먼스마케팅코더 2022. 6. 4.
반응형

안녕하세요,

오늘은 셀리니움을 하시다가 막히는 iframe을 찾는 방법에 대해 말씀드리고자 합니다.

보통 파이썬 크롤링 사용시 iframe의 문제가 많이 발생합니다. 이에 iframe 내에서 크롤링을 할 때에 잘 사용할 수 있는 방법을 알아보는 시간을 가져보도록 하겠습니다. 

 

 

[Python] 파이썬 셀레니움 iframe 찾기

먼저 저의 python 버전은 하기와 같습니다.

(파이썬 버전 확인 코딩도 넣어놨습니다.)

import sys
print(sys.version)

 

주피터 파이썬 버전 확인

Python 파이썬 셀레니움 iframe 태그 위치 파악하기

 

파이썬으로 셀레니움을 작동시 iframe을 찾는 방법은 먼저 다음과 같습니다. 

하기 코딩과 같이 iframe의 여러 요소를 각 태그 안에서 찾아볼 것이기 때문에 find_elements_by_tag_name을 씁니다. 

iframes = driver.find_elements_by_tag_name('iframe')
#print('현재 페이지에 iframe은 %d개가 있습니다.' % len(iframes))

 

Python 파이썬 셀레니움 해당 iframe 내에 소스 내용 확인하기

 

다음은 하기와 같이 해당 enumerate 으로 각 태그 위치 내에 iframe의 소스를 확인하는 방법입니다.

각 iframe의 위치 내에 page_source를 확인하여 해당 아이프레임 내에 있는 소스 내용을 확인하는 작업입니다.

이에 해당 iframe 내에 내가 찾고자 하는 정보가 확인하면 해당 iframe 순서를 기억해주도록 합시다.

 

 

 

for i, iframe in enumerate(iframes):
    try:
        print('%d번째 iframe 입니다.' % i)
        # i 번째 iframe으로 변경합니다.
        driver.switch_to_frame(iframes[i])
        # 변경한 iframe 안의 소스를 확인합니다.
        print(driver.page_source)
        # 원래 frame으로 돌아옵니다.
        driver.switch_to_default_content()
    except:
        # exception이 발생했다면 원래 frame으로 돌아옵니다.
        driver.switch_to_default_content()
        # 몇 번째 frame에서 에러가 났었는지 확인합니다.
        print('pass by except : iframes[%d]' % i)
        # 다음 for문으로 넘어갑니다.

 

[Python] 파이썬 셀레니움 iframe 순서 내에 해당 소스 정보 확인하기

 

이제 다음과 같이 iframe 순서를 집어넣고 페이지 소스를 print 하여 확인해봅니다.

만일 맞다면 해당 iframe을 가지고 진행하여 beautifulSoup 를 통하여 작성해보시면 됩니다.

driver.switch_to.frame(iframes[2]) #아이프레임
#print(driver.page_source)

 

더 궁금하신 사항 있으면 big203040@naver.com 으로 문의주시면 성심껏 답변드리겠습니다.

 

 

반응형

댓글