문제상황
네이버 맵에서 셀레니움을 사용하여 동적크롤링으로 식당 정보들을 수집하려고 한다.
개발자 도구에서는 원하는 데이터 값이 보이는데 class_name, xpath 온갖 방법을 써도 객체 자체를 못 얻어오길래
다른 방법도 시도해보고 얼레벌레 이틀을 꼬박 매달렸다.
그런데 추출이 되지 않았던 이유는 바로 해당 태그들이 iframe안에 있기 때문이었다.
해결방법
추출하고 싶은 데이터의 위쪽으로 살펴보다 보면 iframe이라는 부모 태그를 찾을 수 있을 것이다.
<iframe id="이름">
iframe의 id를 찾았다면 셀리니움 드라이버에서 프레임을 변경하여 안쪽 태그를 추출할 수 있다.
driver.switch_to.frame('이름') #네이버 맵
만약 id를 잘 모르겠다면 모든 속성을 뽑아내서 살펴볼 수 있다.
# 프레임 살펴보기
iframes = driver.find_elements_by_css_selector('iframe')
for iframe in iframes:
print(iframe.get_attribute('name'))
iframe으로 들어가서 작업을 하다가 다시 상위 프레임으로 넘어와야 할 일이 생길 것이다.
그때는 해당 코드를 통해 원래의 태크 체제로 빠져나오면 된다!
driver.switch_to.default_content()
이틀간의 뻘짓 끝~~
여러분들은 이 게시글을 통해 빠르게 해결하시길 바라요
728x90
'프로그래밍 > Crawling' 카테고리의 다른 글
[Python] 페이지 요청 보낼 때 가상의 유저 만들기 - fake_useragent (0) | 2024.03.27 |
---|---|
[Python] json 에러 교정하기 (0) | 2023.10.23 |
[Crawling] https 403에러 발생 해결방법 (0) | 2022.08.17 |
[Selenium] 버튼 클릭해서 나오는 값 동적 크롤링 하는 방법 (0) | 2022.08.16 |
[Selenium] 네이버 동적 로그인 하기 - 셀레니움 사용법 (0) | 2022.08.16 |