Selenium - 구글 이미지 자동 다운로드 (업무 자동화)

김정곤·2024년 6월 3일
0
post-thumbnail

그냥 로봇으로 바꿔줄게...

이전 GPT 챗봇 학습 게시글에서는 GPT API를 활용해 본인이 운영하는 사이트에 직접 학습시킨 고객 응대 챗봇 구현이 가능하다는 것을 확인하였다. 하지만, 대부분의 문의는 인스타그램 DM으로 오기 마련이다. 이 경우, 챗봇이 답변을 생성한다 하더라도, DM을 자동으로 보내주는 시스템이 없다면 무용지물이다.

따라서 이번 시간에는, Chrome Driver와 Selenium을 활용한 업무 자동화에 대해 알아보는 시간을 가지자. 사소하지만, 구글 이미지 자동 다운로드를 구현해보겠다.


결과물

다음은 내가 가장 중요시 생각하는 데이터를 자동으로 수집하는 화면.gif이다.

위의 gif에서 나는 아무런 행동도 취하지 않고 있다. 코드를 실행 하는 마우스 딸깍 한번에 카리나 사진 몇백개를 자동으로 다운 받을 수 있다.
보다 시피, Chrome Driver는 자동으로 Chrome 인스턴스를 생성하고, 내가 원하는 행동을 알아서 실행해주는 도구이다. 코드 작성시에는 Selenium이라는 오픈 소스를 사용한다.


그냥 크롤링 아닌가요?

놉. 크롤링은 해당 페이지를 로드 후 원하는 요소를 긁어온다는 점에서 점에서 비슷하지만, Chrome Driver를 사용하면 다음과 같은 이점이 있다.

1) 원하는 검색어를 코드에 기입만 하면, 자동으로 해당 이미지를 검색한다.

2) 자동으로 스크롤을 내림으로써, 더 많은 이미지를 로드한다. (단순 크롤링은 직접 스크롤을 끝까지 내려줘야함)

3) 썸네일 이미지를 다운 받는 것이 아닌, 각 이미지를 클릭 후 나오는 해상도 높은 원본 이미지를 다운로드 한다.

또한, Selenium과 Chrome Driver의 핵심은 원하는 기능을 자유롭게 구현 가능하다는 점이다. 이미지 다운로드는 할 수 있는 여러가지 기능 중 작은 일부분이라는 것을 잊지 말자.


코드 및 구현

다행히 해당 기능을 구현하기 위해서는 Chrome Driver 및 Selenium 문서를 처음부터 공부할 필요는 없었다. 구글링을 좀만 하더라도 소스코드를 쉽게 구할 수 있을 것이다.
문제는 소스 코드가 잘 돌아가지 않는다는 점인데, 버전 문제도 있고, 구글 이미지의 인터페이스가 이전과 달라졌는지 몰라도 요소 선택에서 굉장히 큰 애를 먹었다. (4시간 넘게 시달렸는데 그 시간에 하나씩 다운받는게 나을지도..)

driver.find_elements_by_xpath('/html/body/div[4]/div/div[15]/div/div[2]....)

쉽다고 생각할 수 있는데, 생각보다 쉽지 않다. 단순히 F12 누르고 copy XPATH를 하면 될 것 같지만, 실제로는 그렇지 않다. 사실 지금도 왜 돌아가는지 이유를 잘 몰라서 추후에 기회가 되면 정확히 설명하도록 하겠다.


활용방안 및 마무리

카리나는 장난이었고, 최근에 나는 전기회로 소자 이미지 구별 딥러닝 모델을 짜는 프로젝트를 진행중이다. 알다시피 딥러닝 모델에는 방대한 데이터가 필수인데, 그러한 데이터를 얻기 위해 각 전기회로 소자의 이미지를 몇 백개씩 다운 받아야 하는 상황이 온 것이다. 마침 업무 자동화에 관심이 생긴 터라, 구글에서 자동으로 이미지를 다운 받는 시스템을 구축해보기로 하였다.

활용방안은 무궁무진하다. 네이버 자동 로그인 후 원하는 시간대에 블로그 글 자동으로 올리기, 인스타 맞팔 작전 매크로, 처럼 사소한 거부터 시작해서 본인의 직무 및 비즈니스에 중요한 업무 자동화까지 모두 구현가능하다.

허나 흔히 말하는 매크로를 구현하는 것이기 때문에, 법적인 문제나 사이트에서 직접적인 제제가 들어올 수도 있다는 점을 고려해서 활용하자.

profile
4차산업혁명 마스터

0개의 댓글