html 안에 html을 삽입해놓은 웹사이트가 많이 있다.
한 개의 html 안에 수천 수만줄의 태그와 js를 유지관리하기도 힘드니,
어찌 보면 개발자 입장에서 당연할 수 있다.
이 때 삽입하는 방법은 주로 iframe태그를 넣거나, object 태그를 넣는 방법 중 하나로 하는데
각각을 크롤링하는 방법에 작은 차이가 있다.
우선 iframe이 삽입되어 있는 경우는(주로 동영상 플레이어나, 메뉴바, 사이드바와 본문내용이 구분되는 경우에 사용)
driver.find_element_~
가 아니라
driver.switch_to.frame(프레임name이나 id)
로 접근하고,
상위프레임으로 이동해야 할 때 다시
driver.switch_to.parent_frame
이나
driver.switch_to.default_frame
등을 사용해서 이동할 수 있다.
또한 프레임 안에서 정의된 js함수를 실행할 때에도
프레임 안으로 이동한 다음 driver.execute_script(함수명())
으로 해당 js함수를 실행하면 된다.
반면, object태그로 html을 불러온 경우에는
셀레늄의 driver.page_source
로 object태그 내부의 html을 읽을 수 없다.
이 때는 driver.switch_to
메서드가 아니라
object = driver.find_element~
로 해당 object 태그를 찾은 후에
object.find_element~
로 내부 태그를 찾으면 된다.
(현재 프레임이 어딘지 계속 신경써야 하는 문제가 없으므로 간편하기도 하다)
다만 이 경우에 object 내부에만 정의된 js함수는 execute_script로도 잘 실행이 되지 않는데..
개인적으로 해결한 방법은...
개발자도구에서 함수를 정의한 부분을 찾아 복사한 다음
driver.execute_script(함수정의; 함수())
로 함수정의와 함수실행을 붙여서 실행하면
잘 실행된다.
잘 이해가 안되지만 재미있는 점은...
driver.execute_script(함수정의)
driver.execute_script(함수())
이렇게 따로 실행하면 "정의되어 있지 않은 함수"라는 오류가 발생한다.
이게 웹 보안 때문인지 모르겠지만.. 붙여서 실행하면 실행되는 보안대책이라면
무용지물 아닌가?
회사원코딩이 추천하는 오늘자 파이썬 입문교재 3종
1. 모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초
파이썬으로 프로그래밍에 처음 입문하기엔 아주 재미있고 쉽게 배울 수 있음.
다른언어 사용자가 파이썬을 배우는 교재로는 비추천. 다소 가벼운 느낌.
2. 초보자를 위한 파이썬 200제
깔끔한 예제와 소스에 대한 자세한 설명이 돋보이는 교재.
입문-초급-중급-고급 난이도로 단계별 도전이 가능한 꽤 괜찮은 입문서.
3. 혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서
초유의 베스트셀러 "혼공파"마저도 당신에게 어렵게 느껴진다면?
유튜브 무료강의, 온라인실습과 다양한 이미지를 통해
제목대로 "1:1과외하듯" 파이썬을 배워볼 수 있음.
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
0강: 응용프로그램창 백그라운드로 숨기기 (0) | 2020.04.03 |
---|---|
아래아한글 유저 99%는 모르는 기능들 (1) | 2020.04.03 |
hwp의 API는 왜 이렇게 복잡할까? (2) | 2020.04.01 |
댓글