brunch

You can make anything
by writing

C.S.Lewis

by 반병현 Feb 01. 2019

아이돌 사진 수 천장을 한 번에 다운로드해 보자 (1)

Selenium을 이용한 크롤링

  이번 글의 소스코드는 깃허브에서 받으실 수 있습니다. 앞 글들을 참고하셔서 git pull origin master를 재실행주시면 폴더 안에 image_crawler 라는 폴더가 새로 생겨 있을 것입니다.


  앞 글들을 읽고 오지 않으신 분들은 아래 링크에서 바로 다운로드 하시면 됩니다.


  



  반갑다. 정말 오랜만에 돌아왔다. "수 천 건의 텍스트 파일" 시리즈 이후로 한 달이 넘는 시간이 흘렀다. 그동안 독자 여러분들이 필자의 브런치에 머물러 있을 것이 아니라, 파이썬 교재도 구매해서 읽어보고 다른 블로그에 파이썬과 관련된 검색도 해 보며 시간을 보냈기를 바라본다.


  컴퓨터에게 업무를 하청 주는 것으로 워라밸을 챙기려면 코딩 실력을 어느 수준까지 키워야 할까? 필자가 생각하기로는 한 달 정도 기본기를 닦으면 충분하다고 생각한다. 컴공 전공자들은 반감을 가질 수도 있겠으나, 제삼자가 사용할 것을 전제로 예외처리까지 완벽하게 된 프로그램을 만드는 것과 나 혼자 쓰기 위해서 돌아만 가는 스크립트를 짜는 것은 별개의 차원이라고 생각한다.


  하루에 한두 시간씩 투자하여 한 달가량 교재를 따라가다 보면 파이썬에서 자주 쓰이는 문법은 거의 한 번씩은 써 볼 수 있다. 그때부터는 본인의 흥미와 시간 투자에 따라 얼마든지 실력을 높일 수 있다. 필자는 어느 정도 파이썬 규칙이 눈에 들어오면 그때부터는 직접 많은 코드를 짜 보는 것이 중요하다고 생각한다.


  처음에는 계산기 따위를 만들거나, 다른 블로그에서 소개한 예제를 따라서 만들어 보는 수준이면 충분하다. 그러다가 자신감이 생길 때마다 조금씩 조금씩 더 어려운 문제를 해결해 보면 된다. 코딩을 하다가 막히면 바로 구글 신에게 쪼르르 달려가 보자. 구글 신은 항상 답을 알고 계신다.


  그리고 또 중요한 것이 있다. 바로 "파이썬과 함께라면 못 만들 것은 없다는 마음가짐만 있으면 정말로 못 만들 것은 없다는 마음가짐"이다.


  이번에는 셀레늄(Selenium)이라는 툴을 이용해 인터넷에서 정보를 긁어 오는 연습을 해 볼 것이다. 필자는 노동청에서 등기우편 배송추적을 하는 용도로 셀레늄을 처음 접해봤다. 웹 개발에 대한 지식 따위도 거의 없었기 때문에 사실상 처음 보는 개념을 이용해 문제를 해결해야 하는 상황이었다. 마스킹 해제까지 해야 했을 때는 숨이 턱 막혔다. 파이썬으로 윈도우의 마우스 커서를 제어해 보거나 한 경험이 없었기 때문이다. 그날 필자는 등기우편 제도라는 것을 만든 몰지각한 사람을 절대 용서하지 않으리라 다짐했다.


  처음에는 막막했지만 어떤 기능이 필요한지만 결정하고 나니 꽤나 수월했다. 왜냐하면 구글 신께서는 모든 것을 다 알고 계시기 때문이다. 필자에게 필요한 기능을 구글에 검색하면 십중 팔구는 이미 누군가가 사용하기 쉬운 형태로 가공하여 배포하고 있다.


  오픈소스 생태계가 이렇게 위대하다. 새로운 것을 만드는 데 100이라는 노력이 필요하다고 치자. 우리는 20 정도의 노력을 기울이면 누군가가 만들어 둔 90만큼의 자료를 찾을 수 있고, 여기에 10 정도의 노력을 더해서 우리가 만들고자 하는 프로그램을 만들 수 있다. 이렇게 만들어진 자료를 또다시 공유하면 그다음 주자는 더욱 적은 시간을 들여 더 좋은 프로그램을 만들어 인류에 기여할 수 있다. IT업계는 오픈소스라는 철학 덕분에 이렇게 빠르게 발전하고 있다.


  농업은 정 반대로 돌아가고 있는데. 농촌에서는 다 쓴 비료 통을 버릴 때에도 상표를 모두 소각하고 빈 통만 버린다. 예전에 충청도에 딸기 고설베드 교육을 들으러 간 적이 있다. 교육 중에 어떤 분께서 손을 들고 질문을 하셨다.


   "내가 어떤 비료를 줬더니 딸기가 특정 현상을 보이면서 죽었는데, 이건 어떻게 대처하면 좋은가?"


  강연 나온 교수님께서 "다른 분들도 아셔야 하니까 그 제품이 뭔지 말씀 좀 해 주시겠어요?"라고 말씀하셨다. 그랬더니 놀랍게도 그 뒤로 그분은 아무런 질문도 하지 않으셨다. 다른 농부들에게 정보를 공유하기 싫어서. 내 문제를 해결하는 것보다 다른 사람에게 정보를 주지 않는 것이 더 중요한 동네다. 이러니 농업의 발전 속도가 IT업계와는 비교조차 안 되는 것이다.


 


  여하튼 이번 시간에는 경험이 부족한 분야의 문제를 어떻게 하면 해결할 수 있는지, 필자가 직접 고민하면서 해결방법을 찾아나가는 과정을 보여주고 싶었다.


  필자는 구글에 필자의 이름을 자주 검색해 본다. 그리고 리플을 읽어 보는 것을 좋아한다. 악플을 발견하면 바로 pdf로 떠서 저장해 두기도 한다. 여담이지만 학창 시절에 지인들을 위해 고소장 쓰는 것을 정말 자주 거들어 줬다. 이 이야기는 나중에 기회가 되면 풀어보도록 하겠다. 


  리플을 읽다 보니 이런 내용이 있었다.


  "저 사람은 AI석사니까 학습 데이터를 대량으로 확보하기 위해 크롤링을 평소에 자주 해 봤을 것이다. 그러니 AI석사한테 저런 문제는 물고기가 물 만난 상황이다."


  필자가 생각하기에도 상당히 논리적인 추론이라 고개가 끄덕여졌다. 하지만 애석하게도 필자는 시뮬레이터를 만들어 강화 학습을 하거나, 인간 연구자가 하나하나 손으로 레이블링 한 양질의 심장 CT 사진 등을 사용하였기 때문에 데이터를 직접 대량으로 모아 볼 필요가 그렇게 많지 않았다. 작곡 인공지능을 만들던 시절에도 12만 건의 midi 파일을 모아서 올려둔 자료를 발견하는 바람에 그걸 계속 사용하였고, 상상텃밭에서는 이장훈 개발자가 만들어 준 크롤러를 사용하며 꿀을 빨았다. 정말로 그때 태어나서 처음으로 크롤러를 만들어 본 것이다.


  따라서 당연히 필자는 웹이나 크롤링에 대한 이해도가 낮다. 그러므로 필자가 크롤링에 대해 설명하는 것이 독자 여러분들에게 가장 와 닿을 것으로 생각한다. 그래서 이번 주제가 바로 크롤링이다.



구글 신께서 거주하시는 IT업계의 성전

  필자는 박효신을 굉장히 좋아한다. 어린 시절부터 팬이었고, 대학 시절에는 신봉자였으며, 지금은 모든 신 중에서 박효신을 가장 위대한 신이라 생각한다. 효멘. 여하튼 그래서 이번 글에서는 박효신을 주제로 이야기를 풀어나가 보려고 한다.


'박효신' 구글 검색 결과

  자, 모두들 구글에 취향에 맞는 검색어를 입력해 보자. 아이돌 가수도 좋고 음식도 좋다. 필자는 박효신으로 검색했다. 지금부터 박효신 사진을 구글에서 자동으로 검색해서 좌라락 긁어와 컴퓨터에 다운로드해 주는 코드를 짜 볼 것이다.


  혹시 자녀가 아이돌 가수에 깊게 빠져서 공부를 하지 않는다면 이 글의 링크를 공유해 주기 바란다.


  "BTS 오빠들 사진 수 천장을 한꺼번에 다운로드할 수 있다던데?"


  슬그머니 파이썬 책을 함께 선물해 주기 바란다. 자녀를 훌륭한 인재로 키우고 싶다면 동기부여를 잘 해 주어야 한다. 입시 컨설턴트 붙여주는 게 아니라 동기부여가 부모의 역량이다.


강한 힘을 원하는 후배

  그런데 간혹 받아들이는 사람의 성격이나 가치관에 따라서 전혀 상상치 못 한 부작용이 생길 수도 있을 것 같다. 이 후배의 경우 동기부여가 확실히 걸린 것 같기는 한데... 크흠. 필자의 책임이 아니다. 동기야 어찌 되었건 훌륭한 IT인재로 자라나길 바란다.


  여하튼 저 후배의 질문에 대한 대답을 해 보자면, 답은 Yes다.


이어지는 내용은 아래 링크에서 감상하실 수 있습니다.





매거진의 이전글 수 천 개의 텍스트 파일을 엑셀 하나로 합쳐 보자(2)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari