[Python] 웹 크롤링 기초


데이터 수집의 3단계

데이터 수집의 3단계

  1. 계획단계 : 어떤 데이터를 수집할 것인지 결정하고, 데이터의 원본 및 형식을 정한다. 또한 데이터 수집에 필요한 도구와 기술을 선택한다.
  2. 수집단계 : 데이터를 수집하는 단계로, 이를 위해 웹 크롤링, API 호출 또는 수동 데이터 입력과 같은 다양한 방법을 사용할 수 있다. 데이터를 수집하면서 데이터 품질을 유지하고, 저작권 및 개인정보 보호와 관련된 법률을 준수해야한다.
  3. 가공 및 저장단계 : 수집한 데이터를 가공하여 필요한 형식으로 정리하고, 데이터베이스 또는 파일 시스템에 저장한다. 이 단계에서는 데이터를 분석할 수 있도록 준비한다.

스크래핑과 크롤링

  • 스크래핑: 웹페이지의 특정 부분에서 원하는 데이터를 추출하는 기술
  • 크롤링: 웹페이지를 자동으로 탐색하여 원하는 데이터를 추출하는 방법

반자동화 프로그램

  • 수 작업의 일부를 프로그래밍을 지원하는 형태
  • 1단계 : 수집할 페이지를 지정하여 프로그램 시작(수동)
  • 2단계 : 대상 페이지를 내려받고 특정 데이터 추출(프로그램)
  • 3단계 : 수집한 데이터를 일정 형식으로 저장(수동 OR 프로그램)

완전자동화 프로그램

  • 모든 부분을 자동화 프로그램으로 작성하여 실행
  • 스케쥴링을 이용하여 순환/반복 기능을 가짐(크롤러)
  • 변화에 취약하다는 단점

[게시물 공개 처리 전 삭제]

수집데이터의 처리와 저작권

- 웹사이트의 정보는 기본적으로 저작물

- 2016년 재정된 저작권법 제 30조: 정보 해석을 목적으로 저작물을 복제/번안 가능

 

웹사이트의 리소스 압박과 업무 방해

- 웹 사이트의 지원을 독점하게 되면 다른 사람이 웹 사이트를 이용할 수 없음

- 무한 크롤러 사용시 업무방해 혐의 적용 가능

 

크롤러와 API

- 해당 사이트에서 API 지원여부 확인 

 

크롤링 사례

- 구글, 스카이스캐너 등


WWW

www는 World Wide Web의 약자이다. 웹페이지는 웹상의 문서이며 웹 브라우저로 보는 웹사이트는 문서로 이루어져있다. 텍스트, 그림, 음성, 동영상 등 표현이 가능하며, HTML로 이로어져 있다.


Web의 이해

Clinet(클라이언트) : 서비스를 요청하는 프로그램, 앱

server(서버) : 요청에 대해 응답을 해주는 프로그램

클라이언트가 서버에게 contents를 요청하면, 서버는 요청받은 contents를 클라이언트에게 전송한다. 브라우저는 서버에서 받은 HTML을 해석하여 화면에 보여준다.


HTTP

HTTP는 Hyper Text Transfer Protocol의 약자로, 인터넷에서 데이터를 전송하는데 사용되는 프로토콜이다. 보안을 위해 HTTPS로 확장이 가능하고, 데이터의 암호화를 통해 통신을 보호한다.

 

Request Method

  • GET :  자료를 요청할 때 사용
  • POST : 자료의 생성을 요청할 떄 사용
  • PUT : 자료의 수정을 요청할 때 사용
  • DELETE : 자료의 삭제를 요청할 때 사용

 

GET과 POST

 

GET

  • Body 없이 Header만으로 전송된다
  • 링크/북마크가 가능하다
  • 요청에 길이제한이 있다.
  • 쿼리 문자열은 key와 vlaue를 가지고 있으며 URL에 쿼리문자열이 올 수 있다.

 

POST

  • Body에 query data가 들어간다
  • 링크/북마크가 불가능하다
  • 데이터 길이에 제한이 없다.
  • URL을 가지지 않으므로 주로 중요한 데이터를 다룰 때 사용한다.

 

Status Code

  • 1xx(조건부 응답) : 요청을 받았으며 작업을 계속함
  • 2xx(성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킴
  • 3xx(리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야함
  • 4xx(요청 오류) : 클라이언트에 오류가 있음을 나타냄
  • 5xx(서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타냄

스크래핑 관련 주요 모듈

  • webbrowser 파이썬 기본 내장 모듈로 브라우저로 특정 페이지를 열 때 사용
  • requests 인터넷에서 파일과 웹 페이지를 다운로드
  • bs4(Beautifulsoup) 웹페이지가 작성된 형식인 HTML을 구문 분석(파싱)
  • selenium 웹브라우저를 띄우고 제어, 양식 채우기와 마우스 클릭 등 시뮬레이션이 가능함