아이효 2: 발표준비

곽정은·2021년 3월 11일
3

스터디

목록 보기
8/19

PPT에 대한 설명을 블로그에 따로 적습니다.


1. 크롤링이란?

  • 무수히 많은 컴퓨터에 분산 저장되어 있는 문서를 수집하여, 검색 대상의 색인으로 포함시키는 기술.(네이버 IT용어사전)
  • 특히 웹에서 데이터를 긁어오는 '웹 크롤러'가 하는 작업을 '웹 크롤링/ 스파이더링'라고 한다.

  • 멀티스레드를 이용해 웹과 HTTP 통신라고 Queue 형태의 자료구조를 이용해 아키텍처를 구현했다. 위 그림은 전문적인 크롤링 아키텍처이다.

2. 크롤링하는 법

  • 인터넷을 통해 데이터를 주고 받을 때 프로토콜이라는 규약에 따라 데이터를 교환한다.
  • 웹은 HTTP라는 프로토콜에 따라 데이터를 주고 받는다.
  • 데이터는 웹상 어딘가에 있고, 사용자는 HTTP 프로토콜을 통해 데이터를 가져올 수 있다.
  • 인터넷은 컴퓨터들 사이의 TCP/IP이라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이며, 물리적으로는 해저케이블로 연결되어 있다.
  • TCP/IP 기반으로 구동되는 많은 Application 프로토콜에 HTTP, HTTPS가 있다.
  • 웹은 통신 규약으로 HTTP를 사용하는데, HTTP는 요청(Request)하고, 응답(Response)하는 서버/클라이언트 모델을 따른다.
  • API는 다른 여러 애플리케이션 사이에 간편한 인터페이스를 제공한다.

방법 1

  • 파이썬 크롤링 라이브러리 urllib의 기능은 '웹페이지 다운로드', '웹페이지 분석하기'가 있다.
  • 자세한 내용은 F20-10번 노드를 참고해주시면 된다.

방법 2

  • 파이썬 라이브러리 BeautifulSoup, Requests를 사용하는 방법도 있다.
  • 자세한 내용은 F20-10번 노드를 참고해주시면 된다.

방법 3

  • 웹앱을 테스트하는 웹 프레임워크인 셀레니움을 사용한다.
  • webdriver의 API를 통해 브라우저를 제어하기 때문에 자바스크립트에 의해 동적으로 생성되는 사이트 데이터도 크롤링 할 수 있다.
  • 자세한 내용은 F20-13번 노드를 참고해주시면 된다.

3. 요즘 크롤링에 대한 말들

웹 페이지 몇 개 긁는 건 '크롤러'가 아니다

  • '웹 크롤러 좀 그만 만들어라'라는 글을 보면 API, BeautifulSoup4을 이용한 CSS 셀렉팅를 가지고 크롤링을 하는 것은 진정한 크롤링이 아니며, http request에 불과하다고 말하고 있다. --> API가 없어서 크롤링을 못한다면 알고리즘 수업부터 다시 듣길 바란다고 한다.

robots.txt 윤리

  • 위 블로그에서 'robots.txt 윤리'에 대해서도 말하고 있다.
  • 'robots.txt 파일은 크롤러가 사이트에 요청할수 있는 페이지, 파일과 요청할 수 없는 페이지, 파일을 검색엔진 크롤러에게 알려줄 수 있는 방법이다.
  • 웹사이트 검색에서 로봇이 접근하는 것을 방지하는 규약으로 알려져 있으며, ‘robots.txt’라는 코드를 넣어 외부에서 데이터를 읽거나 접근하는 것을 막을 수 있다.
  • 자세한 사항은 Google 검색 센터로 들어가면 알 수 있다.

크롤링, 잘못하면 법원간다

여기어때

  • 여기어때의 심 전 대표 등은 2016년 야놀자 데이터에 1500만회 이상 접속해 제휴 숙박업소 목록, 입퇴실 시간, 할인금액 등 정보를 빼돌린 혐의로 기소됐다.
  • 재판부는 심 전 대표 등이 야놀자 서버를 크롤링해 제휴 숙박업체 정보를 대량으로 수집하고 영업전략 파악·수집 등에 사용했다고 봤다.

스펙업애드

  • 이 사건의 원고 에브리타임은 2011년부터 전국 400개 대학의 대학생들을 위한 시간표 작성 , 강의 평가 후기 등의 서비스를 제공했다. 피고 스펙업애드는 2017년 타임스프레드를 인수한 뒤, 에브리타임이 보유한 정보를 불법적으로 수집·이용해 자신들의 서비스에 활용했다.
    --> 스팩업애드가 에브리타임의 정보를 크롤링해 무단으로 사용한 것.

참고: AI Hub 안내서

  • AI Hub인공지능 학습용 데이터 품질관리 가이드라인 및 데이터셋 구축안내서 개발 및 공개.
  • 학습 데이터셋 구축안내서에서는 데이터 획득을 인공지능의 기계학습에 필요한 데이터를 현실 세계에서 직접 수집 또는 생성하거나, 이미 보유하고 있는 조직이나 시스템 등으로부터 법률적 제약이 없도록 ‘원시데이터’를 확보하는 활동이라고 적고 있다.
    --> 법에 저촉되면 데이터가 존재해도 사용할 수 없다.

4. 출처

피피티 자료

https://docs.google.com/presentation/d/1TBqqmDpgTK0oATMTenN_Uy34ltyfqwz5_dgvvRFGFtY/edit?usp=sharing

profile
인공지능 냉각시스템 개발기업 전략기획

3개의 댓글

comment-user-thumbnail
2021년 3월 13일

지효님의 알고리즘 강의 2
(선형자료구조에 대해서만 살펴보도록 하자.)

  • 선형자료구조 --> 배열, 링크드리스트, 스택, 큐, 해시
  • 특히 오늘은 '스택, 큐, 해시'에 대해 살펴본다.

스택(Stack)

  • LIFO: Last In First Out, 마지막에 들어온 것이 가장 먼저 나간다.
  • 접시 쌓기.

스택의 구성요소

  • 데이터: 넣고자하는 데이터
  • 연선: 입력(마지막으로 입력, push), 삭제(맨 위에 것을 삭제, pop), 찾기(맨 위에 있는 원소에 접근, top)
  • 구조: 선형

큐(Queue)

  • FIFO: First In First Out, 먼저 들어온것이, 먼저 나간다.
  • 줄서기, 선착순.

큐의 구성요소

  • 데이터: 넣고자하는 데이터
  • 연선: 입력(넣기, enqueue), 삭제(빼기, dequeue), 찾기(가장 먼저온 데이터 처리, front)
  • 구조: 선형

덱(deque)

  • 양방향 큐: 맨 뒤에서 넣고 빼고가 가능하고, 맨 앞에서도 넣고 빼고가 가능.
  • 양방향 스택

덱의 구성요소

  • 데이터: 넣고자하는 데이터
  • 연선: 입력(앞, 뒤 방향으로 넣기, enqueue), 삭제(앞, 뒤 방향으로 빼기, dequeue), 찾기(앞, 뒤 방향으로 맨위에 오거나 가장 먼저 온 데이터 찾기)
  • 구조: 선형

구현

  • 스택을 구현하는 경우, 구조가 선형임으로 배열, 연결리스트 중에서 골라야 한다.
  • 연결리스트는 구현이 안되어 있으므로 배열로 구현하기로 한다.
  • 배열 선언은 arr = []이라고 하면 된다. (파이썬 기준)
  • 모든 원소에 인덱싱으로 가장 빠르게 접근할 수 있는 것은 배열.
  • 데이터는 그냥 막 넣으면 된다.(공간이 충분한 경우에는 맞춰서 그냥 넣으면 된다.)
  • 연산만 구현하면 되는데, 함수를 정의하면 된다.
  • 입력 --> def push() --> 출력에 맞는 가운데 함수를 정의하면 된다..
  • 함수에는 데이터가 들어가고, 배열 자료구조를 넣어준다. --> def push(arr, data)

    깜짝 구현 문제1: arr에 맨마지막에 data를 넣는다.
    --> arr.append(data)
    --> arr += data
    --> arr[:-1] = data (이 경우엔 arr = [0] * n을 먼저 선언해줘야 함.)

  • 구현할 때 구체적으로 문장이나 의사코드로 표현해 보자!
1개의 답글