티스토리 뷰

Programming

Python으로 iFrame 크롤링하기

람람뿅뿅 2017. 5. 22. 23:47
test

Python 으로 iFrame 크롤링하기


2017.05.22


대상 사이트 : http://www.krj.co.kr

문제 상황

  • PDF 자동 다운로드 스크립트 작성을 위해 로그인을 해야하는 상황.

  • 사이트가 iFrame으로 작성되어 ID / PW 를 작성하는 Elements가 인식되지않음.

해결책

<frame marginheight="0" marginwidth="0" name="krjtop" scrolling="no" src="/mainTop.phtml">
<frame marginheight="0" marginwidth="0" name="krjmain" scrolling="yes" src="index_intro.phtml">

대상 사이트의 페이지 소스를 보면 위의 HTML 처럼, iFrame구조로 되어있다.
중간을 보면 name="krjtop"name="krjmain" 이 있는데, 이를 이용해보자.
문제 상황은 로그인을 하기 위함이므로, name="krjmain" 으로 진입한다.

# Selenium으로 iFrame 접근 
 
from selenium import webdriver
 
driver = webdriver.Firefox()         # Firefox On 
driver.get("http://www.krj.co.kr")   # 대상 사이트 진입 
driver.switch_to_frame("krjmain")    # krjmain Frame으로 스위칭 
 
input_id = driver.find_element_by_name("userid")   # ID 입력창 
input_pw = driver.find_element_by_name("password") # PW 입력창 
login_btn = driver.find_element_by_name("image")   # Login 버튼 
 
input_id.send_keys("__ID__")                      # ID 엘리먼트에 입력 
input_pw.send_keys("__PW__")                      # PW 엘리먼트에 입력 
login_btn.click()                                 # Login 버튼 클릭 
# 로그인 완료 후, 브라우저에 탭 생성하기 
 
from selenium.webdriver.common import keys
 
body= driver.find_element_by_css_selector('body')
body.send_keys(keys.Keys.CONTROL + 't')

참고

http://www.assertselenium.com/webdriver/handling-iframes-using-webdriver/