📖 오늘의 학습
Web (WWW, World wide web)
- 두 컴퓨터를 연결하는 네트워크(Network)가 탄생
- 두 개의 컴퓨터를 넘어 한 지역을 묶는 네트워크인 근거리 지역 네트워크(LAN, Local Area Network) 탄생
- 더 나아가 범지구적으로 연결된 인터넷(Internet - Inter network)이 탄생하게 되었다.
🤔 웹에서는 어떻게 정보를 주고 받을까?
먼저 우리의 일상생활에서는 이렇게 정보를 주고 받는다.
- 손님이 직원에게 정보 요청
- 요청에 대해서 직원이 처리
- 상황에 따라서 직원이 손님에게 응답
같은 방식으로 컴퓨터 또한 이렇게 정보를 주고 받는다.
- programmers.co.kr 정보 주세요 -> client가 server에게 request
- 서버가 자원을 탐색한다.
- 서버가 클라이언트에게 답변한다 - 여기 있습니다 or 요청이 이상합니다 -> server가 client에게 response 전달
➡️ 이것이 HTTP (Hypertext transfer protocol) 이다.
HTTP의 구조
- 웹 상에서 정보를 주고받기 위한 약속
- 클라이언트에서 서버로 정보를 요청하는 것을 HTTP요청(request)이라고 한다.
- 요청된 정보에 대해 서버가 클라이언트에게 응답하는 것을 HTTP 응답(response)라고 한다.
직관적인 이해를 위한 예시
인터넷 쇼핑을 통해 구매한 물품을 배송받으려고 한다.
- 받는사람이름, 주소, 배송방법을 기입한다. —> Host, resource, method
- 받는 택배는 크게 송장, 내용물로 나뉨 —> html의 head, body
client가 server에게 요청 (request)
GET / HTTP 1.1
Host : www.programmers.com
User-Agent : Mozilla/5.0
server가 client에게 응답 (response)
HTTP/1.1 200 OK (상태코드를 리턴)
html- head, body…
웹 사이트와 웹 페이지
- 웹 속에 있는 문서 하나는 웹 페이지 이다.
- 웹 사이트는 웹 페이지의 모음이다.
웹 페이지는 어떻게 만들까?
- 웹 페이지는 html, css, javascript로 이루어져있다.
- 웹 브라우저 (크롬, 파이어폭스, 사파리 등등)는 HTTP로 HTML요청을 보내고, HTTP응답에 담긴 HTML문서를 우리가 보기 쉬운 형태로 화면을 그려준다.
다시 말해,
- 웹 페이지는 HTML이라는 형식으로 되어있고
- 웹 브라우저는 우리가 HTTP 요청을 보내고
- 응답받은 HTML코드를 렌더링 해준다
웹 스크래핑
- 웹 브라우저마다 지원하는 태그와 속성이 다르므로 주의
- 원하는 내용이 HTML문서의 어디에 있는지, 어떤 태그로 묶여있는지 관찰
웹 브라우저의 역할을 파이썬 코드로 해보기
- 주피터 랩(Jupyter lab) 세팅
- mac terminal command를 이용한 jupyterlab 설치
pip3 install jupyter
(만약 pip3가 없다면 설치해야함)
jupyter notebook
입력하여 실행
- python requests 라이브러리 사용
- http 통신을 진행할 수 있는 라이브러리
%pip install requests
로 주피터랩 가상환경에 설치 (%를 앞에 붙여줘야 함)
- http method의 종류
- 정보를 달라고 요청하기, GET
- 정보를 갱신하는 것을 요청하기, POST (webhook.site ) 개인 전용 URL을 생성하여 요청을 받은 내용을 출력해줌
웹 스크래핑과 웹 크롤링
차이는 무엇일까?
- 웹 스크래핑 : 웹 페이지들로부터 우리가 원하는 정보를 추출. 예) 날씨 데이터 가져오기, 주식 데이터 가져오기
- 웹 크롤링 : 크롤러를 이용해서 웹 페이지의 정보를 인덱싱. URL을 타고 다니며 반복적으로 데이터를 가져오는 과정. 여기에는 이런 정보가 있다, 저기에는 이런 정보가 있다는 데이터 색인을 하는 활동
예) 검색엔진의 웹 크롤러 : 검색을 하기 위해서는 역설적이게도 그 사이트 안에 어떤 정보가 있는지 알아야함. 크롤러가 이를 수행하여 검색을 용이하게 함
올바르게 HTTP 요청하기
Web scraping 기초
웹 브라우저가 HTML을 다루는 방법
단순한 줄글이 어떻게 홈페이지 화면이 되는 것일까?
- 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱한다.
- 이를 DOM(Document object model)이라고 한다.
DOM 이란?
-
html태그를 루트노드로 head, body,… 태그들이 자식노드로 있는 트리구조
-
각 노드를 객체로 생각하면 문서를 더욱 편리하게 관리할 수 있다.
-
DOM Tree를 순회하면서 특정 원소를 추가할 수 있다. -> 동적구조여서 가능
var imgElement = document.createElement(“img”);
document.body.appendChild(imgElement)
-
DOM Tree를 순회하면서 원하는 특정 원소를 찾을 수 있다
document.getElementByTagName(“h2”)
브라우저는 HTML을 파싱해서 DOM을 생성한다.
이를 바탕으로 요소를 변경하거나 찾을 수 있었다.
파이썬으로 HTML을 분석하는 HTML Parser가 필요하다!
📝 주요메모사항
😵 공부하면서 어려웠던 내용