[프로그래머스] 데브코스 데이터엔지니어링 TIL Day 7

주재민·2023년 10월 24일
0
post-thumbnail

📖 학습주제

파이썬으로 웹데이터 크롤하고 분석하기 (2)


인터넷과 웹

인터넷 : 여러 컴퓨터끼리 네트워크를 연결한 것
웹 : 인터넷 상에서 정보를 교환하기 위한 시스템

발전 과정

  1. 최초의 컴퓨터 출현, 문서 작업 및 복잡한 계산 등 인간이 하는 일을 위임

  2. 두 컴퓨터를 연결하는 네트워크 탄생, 두 컴퓨터 사이의 상호작용 가능

  3. 네트워크들을 묶어 근거리 지역 네트워크 LAN(Local Area Network) 탄생 LAN 내의 컴퓨터 사이의 상호작용 가능

  4. 범지구적으로 연결된 네트워크 Inter Network, 인터넷의 탄생

  5. 인터넷에서 정보를 교환할 수 있는 환경, www(world wide web), 웹의 탄생

웹에서의 정보교환

클라이언트(Client) : 정보를 요청하는 컴퓨터
서버(Server) : 정보를 제공하는 컴퓨터

  1. 클라이언트가 서버에 정보를 요청

  2. 요청에 대해 서버가 작업을 수행

  3. 수행에 대한 작업의 결과를 클라이언트에게 응답


HTTP(Hypertext Transfer Protocol)

웹 상에서 정보를 주고 받기 위한 약속

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

  • HTTP 응답(Response) : 요청도니 정보에 대해서 서버가 클라이언트에게 응답하는 것

HTTP의 직관적 이해

쇼핑으로 상품을 구매해 받으려고 한다.(Request)
이를 위해서는 받는 사람의 이름(Host), 받는 사람의 주소(Resource), 배송 방법(Method) 등의 정보를 입력해야 한다.

택배가 도착하면(Response)
택배가 오고가는데 필요한 정보인 송장(Head : 요청/응답에 대한 정보)과 내용물(Body : 원하는 내용물)을 받을 수 있다.

HTTP로 정보 요청/응답하기

정보 요청

GET / HTTP 1.1 -> 요청정보
Host: www.programmers.com -> 정보 출처
User-Agent: Mozilla/5.0 -> 사용자(요청자)에 대한 정보

…

클라이언트가 섯버에 요청하는 과정에서 변경사항을 전달 할 때 Body에 변경하고자 하는 정보를 담아 전달하기도 함

정보 응답

HTTP/1.1 200 OK
…
<html></html> -> 요청한 정보(HTTP 요청의 Body)

웹페이지와 웹사이트

웹페이지 : 웹 속에 있는 문서 하나, 매우 복잡한 줄글(HTTP 요청의 Body)로 이루어져있다.
웹사이트 : 웹 페이지의 모음

웹 브라우저의 역할

웹 브라우저는 HTML 요청을 보내고 HTTP 응답에 담긴 HTML 코드를 렌더링 해 우리가 보기 쉬운 형태로 화면을 그려주는 역할을 한다.

HTML의 구조

<!DOCTYPE html>
<html>
    <head>
        <title>Example Document</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <p>My name is Mussg!</p>
    </body>
</html>
  • <!DOCTYPE html>로 HTML5임을 명시
  • 가장 바깥 <html>태그로 감싸져 있다.
  • 크게 Head와 Body로 나뉜다.
    - Head : 문서에 대한 정보(제목, 언어 등)
    - Body : 문서의 내용(글, 이미지, 동영상 등)
  • HTML은 여러 태그로 감싼 요소(Element)의 집합으로 이루어짐
  • 태그로 내용을 묶어 글의 형식을 지정한다.
  • 태그는 그에 맞는 속성(Attribute)을 가지기도 한다.

파이썬을 이용해 HTTP 통신하기(실습)

  • requests : Python을 이용해서 간단히 HTTP 통신을 진행할 수 있는 라이브러리
  • get : 정보를 요청
  • post : 정보 갱신을 요청
# requests 라이브러리를 불러온 후, NAVER의 홈 페이지를 요청한 후 응답 받아보기
import requests

res = requests.get('http://www.naver.com')

[200] : 요청에 대한 status code, 요청이 이루어짐을 의미

header와 body 확인

res.headers

res.text


.text는 단순하게 모든 텍스트를 가지고 온다.

post 활용을 위해 https://webhook.site 이용

위 사이트에서 얻은 임의의 링크로 실습을 진행

res =requests.post('https://webhook.site/6e0346b1-262f-4948-9315-7f92e20d6bc3')

갱신을 위해 payload를 포함해서 post를 보낸다.

# payload와 함께 POST를 보낸다.
payload = {"name": "Hello", "age": 13}

res =requests.post('https://webhook.site/6e0346b1-262f-4948-9315-7f92e20d6bc3')

실행 전과는 달라졌음을 알 수 있다.


윤리적으로 웹 스크래핑/크롤링 하기

웹 스크래핑 vs 웹 크롤링

웹 스크래핑 : 특정한 목적으로 특정한 웹 페이지에서 데이터를 추출하는 것(데이터 추출)
웹 크롤링 : URL을 타고 다니며 반복적으로 데이터를 가져오는 과정(데이터 색인)

올바르게 HTTP 요청하기 위해 고려해야 할 것들

  • 웹 스크래핑/크롤링을 통해 어떤 목적을 달성하고자 하는가?
  • 내 웹 스크래핑/크롤링이 서버에 영향을 미치지는 않는가?

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

DOM(Document Object Model)

브라우저의 렌더링 엔진은 웹 문서를 로드한 후 파싱을 진행해 head, body에는 어떤 태그, 요소가 있는지 트리를 만드는데 이 결과를 DOM이라고 한다.

DOM의 장점

  • 원하는 요소를 동적으로 변경할 수 있다.
  • 원하는 요소를 쉽게 찾을 수 있다.

0개의 댓글