NoSuchElementException error
selenium을 이용하여 크롤링 할 때, 분명히 크롤링하고자 하는 요소가 보이고 개발자 도구에서도 존재하는데도
막상 크롤링을 시도하면 id값, class값, xpath 등 어떤 경로로 해도 해당 요소를 찾을 수 없다는 NoSuchElementException error가 발생하는 경우가 있다.
네이버 카페, 다음 카페를 크롤링을 시도하면 위와 같은 상황이 발생한다.
본인은 다음 카페에서 본문에 있는 이미지의 주소를 크롤링하려고 한다.
분명히 이미지가 존재하고, 개발자 도구에서도 존재하는데 python으로 크롤링을 시도하면 '요소를 찾을 수 없다'라는 에러가 발생한다.
이 때, 내가 크롤링하고자 하는 요소가 iframe안에 있는지 확인해보자!
만약 크롤링하고자 하는 요소가 iframe 안에 있다면 해당 element는 직접 접근할 수 없다...
iframe이 존재하는지 확인
이럴 땐, 개발자 도구(F12)에서 ctrl+F를 통해 iframe을 검색해보자.
또는 아래와 같은 코드를 통해 iframe이 있는지를 확인하고, iframe들의 이름과 id를 확인할 수있다.
그렇다! 내가 크롤링하고자 했던 이미지의 element는 id="down"이란 iframe안에 존재했던 것이다.
이와 같은 경우, 해당 element가 있는 iframe으로 전환 후 해당 요소에 접근해야 한다.
원하는 iframe으로 전환
driver.switch_to.frame('id or name')
위 함수를 사용하여 id 또는 name을 매개변수로 전달하여 원하는 iframe으로 이동할 수 있다.
찾은 ifame으로 이동 후, 다시 원하는 element 접근하니 성공한 것을 볼 수 있다!
'Programming > Python' 카테고리의 다른 글
[Python] 반복문(for문)으로 변수 여러개 한 번에 선언하기, globals() (2) | 2024.06.09 |
---|---|
[Python] 가상환경 (pipenv,venv, conda) 종류 비교 및 사용법 (0) | 2024.05.05 |
[Python] while문에서 tqdm 사용하기, 구글 이미지 크롤링(스크래핑) (0) | 2024.04.28 |
[Python] argparse 모듈 사용법 (0) | 2024.04.13 |
[Python] List comprehension 리스트 안에서 for문, if문 사용하기 (0) | 2024.04.09 |