본문 바로가기
카테고리 없음

김대리, 크롤링이 뭐야

by 데이터스토리 2022. 2. 20.
반응형

김대리! 이리와봐

예. 팀장님 부르셨어요

팀장은 김대리를 빤히 처다보며 말한다. "너, 불렀으니 왔지. 그냥 니 발로 오는 애는 아니지 않니."

"아...예." 김대리는 오늘도 조금 긴장을 한데. 회사생활 4년. 대리가 되었지만 언제나 막내 취급이다. 밑에 아무도 안들어오기 때문이니...내가 모든것을 해야 한다. 이해 해야지.... 내가 들어온 여기 마케팅3팀도 신입이 들어온게 5년 만이라고 하니, 말을 다 했지. 요즘 신입은 5년 마다 뽑나. 음~~ 나도 내년이면 후임을 받을 수 있겠지...ㅋㅋ

 

팀장님의 얼굴이 내 앞으로 점점 다가온다. "이봐, 김대리. 무슨 생각해..."

"아,.. 아닙니다. 생각은요 무슨. 저 생각없는 거 아시잖아요." 휴~! 또 트집잡으려나.

"오늘 부른 건 크롤링이 뭔가해서 물어 보려는 거야. 그거 있잖아. 웹 크롤링. 나에게 설명좀 해줘봐." 팀장은 엄지손가락을 회의실 방향으로 향했다."

에고, 그거 구나. 우리 팀장님은 모르는 것은 못참지. 음~. 한 30분 설명하고 아메리카노 한잔 얻어 먹어야 겠다.

 

회의실.

회의실 예약은 나의 몫. 어플을 열고 회의실 예약을 걸었다. 14:30~15:30분 , 1시간.

우리회사는 회의실 예약을 한시간이 맥스(Max)다. 알차게 회의를 하라는 뜻. 하지만 현실은... 에고.

"팀장님, 크롤링은 주로 웹크롤링을 이야기 합니다. 웹크롤링은 웹페이지 전체를 가져옵니다. 그리고 그 웹페이지에 연결된 링크 페이지도 가져와서 저장을 합니다. 여기서 주의할 점이 있습니다. 링크된 페이지가 다시 원래 페이지를 다시 링크하고 있다면, 무한 반복적으로 서로가 서로의 페이지를 가져오는 정보를 주게 됩니다. 그래서 중복된 페이지 제거가 중요하죠. "

"음. 그 페이지를 무한 반복적으로 가져온다는 부분이 이해가 안돼. 예를 들어줘뵈"

"예. 예를 들어 드리겠습니다.

구글이 우리 회사 홈페이지를 크롤링한다고 가정하겠습니다. 먼저 우리회사 홈페이지를 크롤링해서 가져갑니다. 그리고 홈페이지 내에 있는 링크 페이지를 취합합니다. 동일한 링크페이지가 존재할 수 있으므로 중복된 링크를 제거합니다. 이어서 링크페이지로 접근해서 그 페이지를 가져옵니다. 그리고 가져온 페이지에 있는 링크 페이지를 선별하고 중복을 제거합니다. 이 때, 우리회사 페이지가 링크에 존재한다면 어떨께 될까요?"

"음.. 그러니까. 그 페이지가 다시 우리회사 홈페이지를 접근하고 우리회사 홈페이지는 그 쪽 링크를 가지고 있으니, 다시 그 링크로 접근할 꺼고. 계속 끝도 없이 순횐되겠다. 그러면 안되지."

"맞습니다. 그래서 그런 연결을 제거를 하게 됩니다. 

결국 크롤링은 해당 웹페이지와 연결된 페이지를 가져오는 작업을 의미하는 거죠"

 

"김대리, 근데 인터넷에는 크롤링으로 데이터 수집을 한다고 나오는데, 실제 의미는 웹페이지를 가져오는 거지 원하는 데이터를 직접 수집하는 것은 아닌것이네."

"예. 맞습니다. 그게 정답입니다. 데이터를 수집하는 것 그것을 의미하는 용어는 스크래핑(Scraping)입니다. 신문이나 잡지 등에서 기사를 잘라서 별도로 모으는 작업과 같은 의미이죠. 예전에는 신문스크랩 숙제가 있었다고 들었는데, 어떠신가요?"

"응. 맞아. 나 때는 안했는데, 예전 국민학교 시절에는 있었다고 하더라. 그럼, 데이터 분석을 위해서는 스크래핑을 해야 하는 거구나. 그거 좀 설명해 줘봐. 내가 알고 싶은건 바로 그거 스크래핑이거든. 데이터 수집 관련 업무가 생길것 같아서 말이야."

 

"데이터 수집이라면, 스크래핑이란 용어를 사용하는 게 맞아요. 헌데, 웹크롤링이란 용어가 먼저 사용되고 일반화 되다 보니 이제는 크롤링도 그 의미로 받아들여지고 있습니다. 잠시만요. 물 한잔 마시고"

"아, 참, 이런, 목마르지, 아메리카노 어때, 한잔씩 하면서 하자고"

... 10분... 아메리카노 한잔씩 가지고 올라왔다.

"쓰~~읍. 아~~! 시원하다. 김대리. 계속 이야기 해봐."

"최종 목적인 데이터 수집을 중심으로 말씀 드리겠습니다. 웹크롤링이라고도 하고 스크래핑이라고도 하지만 그냥, 일반적인 용어인 크롤링이란 명칭을 사용하겠습니다."

"응. 좋아."

 

"웹페이지는 페이지의 구조와 내용을 나타내는 html과 화면을 꾸미는 css 기능을 담당하는 javascript로 구성됩니다.

웹은 2가지 유형으로 볼 수 있습니다. 하나는 정적페이지 이고, 다른 하나는 동적페이지입니다.

우리회사 홈페이지 처럼 정적페이지가 가장 많고 일반적입니다. 우리에게 보여지는 페이지에 어떤 변화없이 문서처럼 보여지는 것이죠. 반면, 동적페이지는 웹페이지에 마우스이동이나, 스크롤다운 같은 어떤 동작이 가해지면 동일 페이지에서 페이지 내용이 변하는 웹을 말합니다. 

이렇게 생각해 볼께요. 정적페이지는 보여지는 웹페이지 저장하고 다른데서 열어도 동일한 내용이지만, 동적페이지는 보여지는 상태를 저장하고 다른데서 열으면 같은 내용이 아니게 되는 것이죠. 

동적페이지 중에 네이버 검색 결과를 보여주는 페이지가 있어요.

네이버 블로그 검색 결과을 보여주는 페이지에서 마우스를 스크롤 다운을 하면 페이지가 계속 내려가면서 화면 우측 스크롤바가 점점 작아지는 것을 볼 수 있습니다.

대표적인 동적페이지 입니다. 한번 해 보시겠어요.네이버 홈페이지로 가셔서 검색영역에 '코로나'라고 입력하시고 검색버튼을 클릭해 보시죠. "

" 잠깐만. 네이버 들어가서, 여기에 '코로나' 입력하고 검색버튼 클릭. OK" 

"여기보면, 결과가 카테고리별로 나오죠. 중간 조금 위에 'View'섹션이 있고, 우측에 보면 '블로그'라고 나오죠. 그거 클릭하세요."

"여기 말이지. 클릭. OK"

"예. 잘하였어요.이제 블로그 내용 목록이 나오죠. 거기서 마우스 스크롤다운 해 보세요. 계속 내려가죠. 그렇죠."

"응. 정말 그러네"

"예. 이런게 동적페이지예요."

"음... 그렇구나."

"정적페이지와 동적페이지에 담긴 데이터를 가져오는 방식에는 차이가 있어요. 사용하는 모듈도 다르죠. 그 내용은 좀 길어요. 실습을 해 보면서 해 보시면 좋을 것 같은데. 내일 10시쯤 하나 해보시겠어요."

"오. 좋지. 실습좋아. 근데 어렵지 않나?"

"아니요. 어렵지 않아. 크롤링은 웹페이지 구성을 분석하고 크롤링 특성에 맞춰 하나씩 대입하면 쉽게 만들 수 있어요. 조금만 차분하게 하시면 됩니다."

"어, 그래. 혹시 내가 덜 차분해서 미리 약치는거 아니지..."

"에이.. 그럴리가요. 내일 10시 괜찮으시죠."

"오케이. 좋아. 네일 다시하자고. 일단 마케팅 1팀의 요청사항 해결하고 자리로 가자."

 

이렇게 팀장님과의 크롤링 수업이 시작되었다.

^^

 

반응형