3. 웹데이터 LRU 캐시 - 배경지식

여경·2023년 1월 23일

Archive

목록 보기
5/5


웹크롤링

1. 웹 크롤링

웹-크롤링 Web-Crawling은 웹 사이트에 있는 데이터를 추출해서 사용하기 위한 목적으로 홈페이지 내용을 수집하고, 추출하는 것을 의미한다. 특정한 규칙에 맞춰서 웹 페이지에 방문해서 내용에 포함된 데이터를 가져오는 것을 말합니다. 사용자가 웹 브라우저로 검색 해서 결과로 나온 정보를 노트에 써놓는 것과 비슷한 행동을 프로그램이 반복해서 저장하도록 만드는 것이다.

  1. HTML 페이지를 가져와서, HTML/CSS등을 파싱하고, 필요한 데이터만 추출하는 기법
  2. Open API(Rest API)를 제공하는 서비스에 Open API를 호출해서, 받은 데이터 중 필요한 데이터만 추출하는 기법
  3. Selenium등 브라우저를 프로그래밍으로 조작해서, 필요한 데이터만 추출하는 기법

2. 웹 크롤러

웹 크롤러란 웹페이지를 방문하여 자료를 수집하는 일을 하는 프로그램을 의미한다. 한 페이지만 방문하는 것이 아닌 그 페이지에 링크된 또 다른 페이지를 차례대로 방문한다. 분량이 많은 웹문서를 하나하나 구분하여 모으는건 어렵기 떄문에 이를 자동으로 수행해주는 것이다.

예를 들면, "멜론 사이트에서 현재 음악 차트 순위 자료가 필요하다."라고 할 때, 사이트에 가서 보고, 엑셀에 값을 넣고 정리해서 상사에게 보고하는 사람들도 있을 겁니다. 하지만 이 데이터를 다른 프로그램이나 무언가를 만들 때 사용하려면 DB 형태로 저장해 놓을 필요가 있을 것이다. 카테고리, 순위, 발매일, 제목, 그룹이름 등 차트에는 여러 정보가 있을 것이다.

웹은 기본적으로 HTML 형태로 되어있고, 그 정보가 HTML 형태로 어떻게 보여지는지도 '개발자 도구' 로 볼 수 있다. 그렇기에 개발자들은 정형화된 형태로 관리하고 있으며 그 형태의 규칙을 분석해서 우리가 원하는 정보들만 뽑아오는 것을 웹 크롤링 작업이라고 하는 것이다.

3. 웹 크롤링으로 가져올 수 있는 정보

HTML 기반의 웹 사이트, 이미지, 문서

읽어볼만한 글 : https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/

2. 사전 준비

1. npm 설치

node package manager 를 의미하며 npm에 의해 개발환경이 생성된다. 이 후 npm 을 통해 설치하는 모든 라이브러리는 node_modules 라는 디렉토리에 저장되며, package.json을 통해 관리할 수 있다.

2. 관련 라이브러리 설치

node 기반으로 크롤러를 만들기 위해서는 Axios, Cherrio 등과 같은 라이브러리를 활용할 수 있다.

Axios : 자바스크립트를 이용하여 AJax 리퀘스트가 가능한 라이브러리이다.
Ajax 란 Asynchronous Javascript and XML을 의미하며 비동기적으로 JSON이나 XML 등의 데이터를 받을 수 있는 방법이다.

Cheerio: JQuery 처럼 DOM selector 기능을 제공한다. Axios로 받은 HTML 데이터에서 실제로 필요한 정보를 발라내는데 사용한다.
cherrio는 파이썬의 beautifulsoup와 유사한 기능을 한다.

npm i axios cheerio

https://chaewonkong.github.io/posts/node-crawling.html

참고하면 좋은 글
https://helloinyong.tistory.com/308

동작 방식
웹 브라우저에서 동작하는 방식도 있지만, 웹 브라우저가 보내는 것처럼 HTTP 요청을 만들어서 보내고 응답으로 받은 페이지 내 용을 분석하는 방식을 주로 사용한다.
크롤링 도구마다 어떤 방식을 사용하는지, 어떤 차이점이 있는지 비교해보기를 권장한다.
주의사항
웹 크롤링은 법적으로 보호받을 수 있는 한계가 있기 때문에 주의해야 한다. 개인적인 용도와 저작권법에서 보호하는 공정한 사용 범위 내에서만 사용해야 한다. 만약 스크래핑한 데이터를 다른 곳에 공개하거나, 웹 사이트를 공격하거나 저작권으로 보호하는 데 이터를 수집하려는 의도를 갖고 하면 불법 행위로 간주된다. 봇배제표준(robots.txt)에 대해 알아보고, 사용자 에이전트(User Ag ent) 표기 방식, 웹 크롤링 불법 사례에 대해 학습한다.

봇 관리에 대한 글 https://www.cloudflare.com/ko-kr/learning/bots/what-is-bot-management/

  1. LRU 캐시 동작 방식
    캐시 교체 정책(영문)에 대해 학습한다.
    그 중에서 LRU (Least recently used) 방식을 활용해서 문제 해결해야 한다.
    캐시 정책 결정 기준
    개수 제한, 용량 제한, 시간 제한 등을 정책적으로 결정할 수 있는 방법들을 확인한다.
  • 일반적인 캐시 동작과 캐시 동작을 결정하는 캐시 교체 정책에 대해 학습하고 정리한다.
  • LRU(Least-Recently-Used) 캐시 동작 방식에 대해 학습하고 본인이 설계한 방식을 정리한다.
  • HashMap (또는 Dictionary)와 LRU 캐시 차이점에 대해 학습하고 정리한다.
  • 콘솔 프로그램에서 입/출력을 처리하기 위한 방식에 대해 학습하고 정리한다.

0개의 댓글