Web Scraping(웹 크롤링) 이란?


컴퓨터 업계에서 일하는 사람들은 "크롤링", "크롤러", "크롤링 알바" 이런 말을 들어본 적이 있을 겁니다. 친구들이나 선배들이 회사에서 크롤링하는 알바를 했다는 경험담을 들은 적도 있죠. 저도 팀 프로젝트를 하면서 크롤링 할 일이 있었습니다. 하지만! 방법을 몰랐습니다.

조언을 구하고 구글의 힘을 빌려서 파싱부터 데이터베이스에 넣는 작업까지 성공을 했습니다. 결과물이 잘 나와서 눈물이 앞을 가리더군요. 사람들에게 스크린샷을 찍어서 보내면서 내가 한거라고 ㅠㅠ;; 그 과정에서 학교 홈페이지를 다운 시키기도 했습니다. 죄송합니다... 3일 밤을 샜어요. 고생했어...아 논지를 벗어 났군요.

우리가 흔히 부르는 웹 크롤러 크롤링의 정식명칭은 'Web Scraping' 입니다.
외국 자료를 찾아보니까 'Web Crawling'보다는 'Web Scraping'이라는 용어를 자주 사용하더군요.


그래서 웹 크롤링이 뭔데?

"Web scraping is a computer software technique of extracting information from websites."
(웹 크롤링이란 컴퓨터 소프트웨어 기술로 웹 사이트들에서 원하는 정보를 추출하는 것을 의미합니다.)

보통 웹 크롤러란 인터넷에 있는 웹페이지를 방문해서 자료를 수집하는 일을 하는 프로그램을 말합니다. 이때 한 페이지만 방문하는 것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지를 차례대로 방문하고 이처럼 링크를 따라 웹을 돌아다니는 모습이 마치 거미와 비슷하다고 해서 스파이더라고 부르기도 합니다. 엄청난 분량의 웹문서를 사람이 일일 구별해서 모으는 일은 불가능에 가깝습니다. 때문에 웹 문서 검색에서는 사람이 일일이 하는 대신 이를 자동으로 수행해 줍니다.


예를 하나 들어보죠.

멜론(www.melon.co.kr)에서 2016년 07월 27일 12:23분의 음원 차트가 필요하다고 가정해봅시다.
물론 사이트에 들어가서 일일이 확인을 하고 엑셀에 값을 입력하고 정리해서 상사에게 보고하는 사람들도 있을 겁니다.
하지만 다른 곳에 활용하려면 DB 형태로 저장해 놓을 필요가 있습니다.
카테고리/순위/발매일/제목/앨범제목/그룹이름 등등 차트에도 여러 정보가 있겠죠.

웹은 기본적으로 HTML 마크업 언어로 보여지는 걸 다들 아실 겁니다. 저희가 결과물을 눈으로 볼 수 있다면 해당 정보가 HTML 형태로 어떻게 구성되어 있는지도 확인할 수 있습니다. '페이지소스 보기' 또는 '개발자 검사'로 말이죠.(우클릭)

이런 소스들은 보통 개발자들이 어떤 정형화된 형태로 작성한 결과물입니다. 때문에 규칙이 생기죠. 이런 규칙을 분석해서 우리가 원하는 정보들만 뽑아오는 것을 지금부터 하려는 웹 크롤링 작업이라고 생각하시면 됩니다. 한국에서도 웹 크롤링 할 일이 많기 때문에 알바를 구하는 구인 광고도 본 적이 있고, 네이버, 다음, 구글 등등 여러 포털 사이트 블로그에 크롤링 하는 방법을 치면 나오는 정보들도 많습니다. 그 중 가장 많이 나오는 것이 파이썬으로 크롤링 하는 소스들이 제일 흔하죠.

저도 처음은 파이썬으로 크롤링 개념을 배웠습니다. 하지만 저는 파이썬보다는 현재 루비를 좋아해서 루비로 할 수 있는 방법을 찾아보았습니다. 지금부터 몇 차례에 걸쳐서 'Ruby'와 'Rails' 그리고 'nokogiri'라는 잼을 이용하여 크롤링 하는 방법에 대해서 이야기할 예정입니다.

한국에서 노코기리로 스크래핑하는 것에 대한 방법을 기술한 자료는 그렇게 많지 않았습니다. 일주일 내내 찾아도 제대로 된 것이 2개? 1개? 정도 였고 정보도 통틀어 10개를 넘지를 않았습니다. 그래서 루비와 노코기리로 크롤링 하는 방법을 찾는 분들을 위해서 노코기리 잼 분석부터 레일즈로 띄우는 방법까지 자세히 기술해보려고 합니다.

자세한 웹 크롤링에 대한 정의는 아래 위키 피디아를 참조하시기 바랍니다. 위키가 저보다 똑똑하니까요.
(https://en.wikipedia.org/wiki/Web_scraping)

그리고 외국 자료들이 더 정확하고 유용하니까 지금부터라도 '웹 크롤링', '웹 크롤러'로 검색하기 보다는 "Web Scraping with something" 이런 식으로 검색하여 원하는 정보를 찾아 활용하시기 바랍니다.

results matching ""

    No results matching ""