본문 바로가기
Study/Python

[Python] 크롤링 네이버 지도 데이터 수집- iframe 전환

by YoungD 2023. 9. 4.
In [1]:
from selenium import webdriver as wb
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.keys import Keys
In [2]:
# 1. 크롬드라이버를 실행해서 네이버지도 사이트로 이동
driver = wb.Chrome()
driver.get("https://map.naver.com/p?c=15.00,0,0,0,dh")
In [3]:
# 2. 검색창에 검색어를 입력(동명동 회식)
# 검색창의 구분자인 id값이 실행할 때마다 변한다
# 이런 경우 다른 선택자를 활용
search = driver.find_element(By.CSS_SELECTOR,".input_search")
search.send_keys("동명동 회식")
search.send_keys(Keys.ENTER)
In [4]:
# "미미원"을 클릭해서 세부정보를 조회
# 화면상에 데이터가 출력은 되는데 조작이 안 될때는 iframe을 검사하기
# 1. req는 iframe src를 찾아간 곳에서 데이터 수집을 했다
# 2. selenium에서는 현재 컴퓨터가 바라보고있는 html창을 변경
In [5]:
# 컴퓨터에게 바라고 있는 창을 원하는 iframe으로 변경
# frame을 변경할 때는 -> switch_to.frame("iframe의 id")
driver.switch_to.frame("searchIframe")
 
In [6]:
title = driver.find_elements(By.CSS_SELECTOR,".place_bluelink.YwYLL")
title[0].click()
 
In [7]:
# 상세정보에서 가게 이름 정보 수집하려면 상세정보 iframe으로 화면을 이동시키기
# 주의점
# iframe에서 다른 iframe으로 바로 이동이 불가능
# 원본 데이터로 이동하고 다른 iframe으로 이동
driver.switch_to.default_content() # 원본 데이터
In [8]:
# 상세정보 iframe으로 이동
driver.switch_to.frame('entryIframe')
 
In [9]:
# 상세정보에서 가게 이름 정보 수집
name = driver.find_element(By.CSS_SELECTOR, ".Fc1rA")
name.text
'미미원'
In [10]:
# 황톳길 (검색내용 2번째) 클릭 -> 가게 이름
# 원본데이터 -> 검색프레임 -> 2번째 가게 클릭
# -> 원본데이터 -> 상세정보프레임 -> 데이터수집
driver.switch_to.default_content()
driver.switch_to.frame("searchIframe")
time.sleep(1)
title = driver.find_elements(By.CSS_SELECTOR,".place_bluelink.YwYLL")
title[1].click()
time.sleep(3)
driver.switch_to.default_content()
driver.switch_to.frame('entryIframe')
time.sleep(1)
name = driver.find_element(By.CSS_SELECTOR, ".Fc1rA")
name.text
'황톳길'