본문 바로가기

데이터엔지니어링

[2주차] 파이썬으로 웹다루기 (2)

🙂 HTTP

✔ 인터넷과 웹

  1. 컴퓨터 발명
  2. 두 컴퓨터 사이의 네트워크 탄생
  3. 여러 네트워크를 묶어 근거리 지역 네트워크 (LAN) 탄생
  4. 범지구적 네트워크인 인터넷 탄생
  5. 인터넷에서 정보를 교환할수 있는 환경 - WWW (World Wide Web) 탄생

✔ 웹에서 정보 주고받기

Client: 정보를 요청하는 컴퓨터

Server: 정보를 제공하는 컴퓨터

  1. 클라이언트가 서버에게 정보를 요청
  2. 요청에 대해 서버가 작업 수행
  3. 수행한 작업의 결과를 클라이언트에게 응답

✔ HTTP의 구조

Hypertext Transfer Protocol: 웹 상에서 정보를 주고받기 위한 약속

HTTP 요청(Request): 클라이언트에서 서버로 정보를 요청

HTTP 응답(Response): 서버가 클라이언트에게 응답

 

Request Head

GET / HTTP 1.1

HOST: www.programmers.com

User-Agent: Mozilla/5.0

...

 

Chrome 개발자 도구 등을 통해 확인 가능.

 

Response Head

HTTP/1.1 200 OK

...

<html>...</html>


🙂 웹 페이지와 HTML

✔ 웹 사이트와 웹 페이지

웹 페이지: 웹 속에 있는 문서 하나

웹 사이트: 웹 페이지의 모음

✔ 웹 페이지를 만드는 방법

HTTP Response에서 Body: <html> ... </html>

웹 브라우저는 HTML 요청을 보내고, HTTP 응답에 담긴 HTML 문서를 통해 화면을 그려줌

✔  HTML의 구조

HyperText Markup Language

 

태그로 내용을 묶어 글의 형식을 지정

원하는 내용이 HTML 문서의 "어디에 있지? 어떤 태그에 있지?" 를 관찰해야 함.


🙂 HTTP 통신 코드

✔  Python을 이용해서 HTTP 통신하기

get: 정보를 요청할 때

post: 정보를 갱신할 때 (ex> 로그인)

 

응답받은 내용이 상당히 방대해서 복잡함.


🙂 웹 스크래핑

✔  웹 크롤링과 웹 스크래핑

웹 크롤링

크롤러(Crawler)를 이용해서 웹 페이지의 정보를 인덱싱

URL을 타고다니며 반복적으로 데이터를 가져오는 과정 - 데이터 색인

e.g. 검색 엔진의 웹 크롤러

 

웹 스크래핑

웹 페이지들로부터 우리가 원하는 정보를 추출

특정한 목적으로 특정 웹 페이지에서 데이터를 추출하는 것 - 데이터 추출

e.g. 날씨 데이터 가져오기, 주식 데이터 가져오기, ...

✔  올바르게 HTTP 요청하기

고려사항

웹 스크래핑/크롤링을 통해 어떤 목적을 달성하고자 하는가?

나의 웹 스크래핑/크롤링이 서버에 영향을 미치지는 않는가?

 

DDoS: 서버에 무차별 적인 요청을 보내서 서버를 마비시키는 것

 

로봇 배제 프로토콜(REP: Robot Exclusion Protocol)

웹 브라우징은 사람이 아닌, 로봇으로 진행 가능

무턱대고 모든 사이트모든 정보를 취득하는 것이 정당할까?

robots.txt : 로보의 무분별한 접근을 통제하기 위함


🙂 웹 브라우저가 HTML을 다루는 방법

✔  DOM

Document Object Model

= 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱

 

왜 브라우저는 DOM을 굳이 만드는가?

✔  브라우저에 대한 넓고 얕은 지식

DOM의 목적: 각 노드를 객체로 생각하면 문서를 더욱 편리하게 관리할 수 있다.

  • DOM Tree를 순회해서 특정 원소를 추가할 수 있다.
  • DOM Tree를 순회해서 특정 원소를 찾을 수 있다.

파이썬으로 HTML을 분석하는 HTML Parser가 필요함.