개요
네이버카페를 셀레니움으로 자동화할 때 분명 눈으로 보이는데 코드를 작성했을 때 선택이 안되거나 path로 검색을 했는데 찾을 수 없다고 나오는 경우가 있어서 어려움이 있을 때가 있다.
그 이유와 해결방법은 매우 간단하다.
iframe
html을 배운 사람이라면 iframe을 알 것이다.
inline frame의 약자로 웹 페이지 안에 다른 웹 페이지를 삽입하는 태그를 말한다.
즉, 눈에는 동일한 웹 페이지처럼 보여도 네이버카페 일부 영역은 다른 웹페이지이기 때문에 선택이나 검색을 했을 때 찾을 수 없다는 오류가 발생하는 것이다.
네이버카페 속 iframe 태그
보는 것처럼 실제로 네이버카페에는 메인 컨텐츠가 들어있는 부분이 iframe name="cafe_mian"에 들어있다.
selenium으로 접근을 할 때 css로 선택하든, js의 쿼리셀릭트로 선택하든, path로 선택하든 iframe 안에 들어가서 실행해야만 실제 원하는 값에 접근할 수 있게 된다.
python selenium iframe 변경 코드
from selenium import webdriver
driver = webdriver.Chrome()
# iframe으로 들어감
driver.switch_to_frame("cafe_main")
# 원래 frame으로 돌아옴
driver.switch_to_default_content()
파이썬에서 셀리니움 코드를 작성할 때 위와 같이 작성하면 원하는 iframe으로 이동하여 조작할 수 있게 된다.
조작이 끝나고 원래 frame에서 조작을 해야하면 제일 아래 코드를 통해 돌아오면 된다.
네이버카페 뿐 아니라 많은 사이트가 iframe을 사용하고 그것 때문에 오류가 생길 때가 있다.
이 때 위와 같은 방법으로 해결이 가능하다.
Photo by AltumCode on Unsplash
※ 함께 보면 좋은 글
셀레니움 네이버 검색광고 API 활용 잔액확인 하는 법 클릭!
'IT > 코딩' 카테고리의 다른 글
셀레니움 구글 로그인 차단 우회하기 (with 파이썬) (2) | 2020.12.10 |
---|---|
슬랙 봇으로 알림 받기 파이썬 코드 (0) | 2020.12.09 |
파이썬 네이버 검색광고 API 활용 잔액확인 (0) | 2020.12.08 |
유튜브 재생목록 총 재생시간 구하는 코드 (0) | 2020.12.05 |
python selenium 네이버 로그인 캡차 피하기 (1) | 2020.12.02 |