문제 상황
인스타그램에서 댓글 정보를 크롤링하는 프로그램을 만들어보려고 했다.
위 이미지 처럼 '댓글 n개 모두 보기' 버튼이 한 화면에 담기지 않아 해당 element을 찾아 클릭을 할 수가 없었다.
이를 해결하기 위해 스크롤을 하려고 했었으나, 현재 모바일 버전으로 접근했기 때문에
driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
코드와 같이 END키로 내리게 할 수가 없었다. (컴퓨터가 아니기 때문이다.)
문제 원인
driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
평소(PC 크롤링) 같으면 위 코드로 해결했겠지만, 모바일로 접속했으므로 END 키가 먹히지 않을 뿐더러 저렇게 하는 것도 부자연스럽다.
문제 해결
자바스크립트를 이용하여 브라우저를 축소한다.
자바스크립트에서는 document.body.style.zoom 으로 브라우저의 크기를 조절할 수 있었다.
이를 축소하면 버튼이 화면에 보일 것이고 원하는대로 클릭도 가능할 것이다.
Python을 이용해서 document.body.style.zoom='60%' 명령을 내리려면 아래와 같은 코드를 작성하면 된다.
driver.execute_script("document.body.style.zoom='60%'")
여기서 주의해야 할 점은 XPATH가 달라질 수 있다는 점에 유의해야 한다. 브라우저 크기를 60%로 바꿨다면 XPATH도 그 버전에 맞게 바꿔주어야 문제 없이 element을 가져올 것이다.