[21.1.7]인터넷과 웹
인터넷(Internet)이란
- 인터넷(Internet)이란 여러 통신망을 하나로 연결한다는 의미의 ‘인터 네트워크(inter-network)’라는 말에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망을 의미
-이러한 인터넷은 클라이언트와 서버로 구성되며, TCP/IP라는 기본 프로토콜을 통해 제공된다.
웹 (WEB) 이란
- 인터넷에 연결된 사용자들이 정보를 공유할 수 있는 공간. www(world wide web)의 발전으로 점차 대중적으로 사용되었다.
- WWW는 하이퍼텍스트를 기반으로 하여 여러 컴퓨터에 분산되어 있는 정보를 쉽게 찾아볼 수
있도록 지원하는 정보 서비스
- 인터넷과 같은 의미로 사용되곤 하지만 엄밀히 말해 웹은 인터넷의 다양한 서비스 중 하나임
- http 프로토콜을 기반으로 한다
정적인 웹(Static WEB) :
웹페이지 관리자(작성자) 가 문서를 변경하지 않는 한 항상 동일한 내용을 전달

동적인 웹 :
요청 시마다 다른 웹 문서의 내용을 클라이언트로 전달하는 것. 즉 서버의 프로그램 처리 결과 전달
- 클라이언트(사용자) : 컴퓨터에 요청
- 서버(제공자) : 요총에 응답
웹 서버(WEB Server) :
HTTP 라는 프로토콜을 기반으로 하여 웹 클라이언트(브라우저)로부터의 요청을 서비스하는 기능을 담당한다.
웹 애플리케이션 서버(WAS) :
- 웹 서버의 기능들을 구조적으로 분리하여 처리하려는 목적으로 제시된 것이 바로 웹 어플리케이션 서버(WAS)이다.
- 클라이언트로부터 요청 받는 일과 화면에 표현하는 로직 (Presentation Logic)까지만 웹 서버에서 담당하고 다양한 기능들을 수행하는 로직 (Business Logic)은 컨테이너가 담당하도록 WAS(웹 어플리케이션 클라이언트)에서 일을 나누어 역할을 분담.
*컨테이너 : 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈

HTTP(Hyper Text Transfer Protocol)
TCP를 사용하는 어플리케이션 계층의 프로토콜. 웹 클라이언트와 웹 서버가 통신(요청,응답) 하는데 필요한 스펙을 정의.
HTTP 요청(Reauest) :
- Starter line :해당 Request 가 어떤 action 을 의미하는지에 대한 정보, 어떤 Request target (url) 에다가 요청하는지를 담는다.
- Header : 해당 Request에 대한 정보를 담고있음, Key:Value값으로 되어있다.
- Host : 요청이 전송되는 target의 호스트 URL 주소
- User-Agent : 요청을 보내는 클라이언트의 정보 ex 웹 브라우저의 정보
- Accept : 해당 요청이 받을 수 있는 응답 body데이터 타입의 정보
- Connection : 요청이 끝난 후에 연결을 유지할것인지를 알려주는 헤더
- Content-Type : HTTP 요청이 보내는 메시지 body 타입을 알려줌
- Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보
- Body : 서버에 넘겨줘야 할 추가 정보를 담고 있음, 전송하는 데이터가 없으면 Body부분은 비어있다. 즉 POST 요청방식일 경우에만 의미가 있다.
HTTP 응답(Response) :
- Stutus line : HTTP버전, status code (응답상태코드), status text(응답상태를 설명)
- Header, Body는 HTTP 요청과 동일하다.
웹 크롤링(Crawling)
웹페이지의 내용을 가지고 오는것을 크롤링이라고 한다. 다른말로 스크래핑(Scrapping)
- BeautifulSoup(bs4) : 웹페이지에서 정보를 스크랩하는 파이썬 라이브러리
- 셀레니움(selenium) :웹사이트를 테스트하기 위한 파이썬 라이브러리로 브라우저의 동작을 자동화할 수 있다.
두 라이브러리 모두 터미널 파이썬 패키지 인스톨러(pip)를 이용하여 설치가능하다.
pip install selenium #셀레니움
pip install bs4 #BeautifulSoup
이 라이브러리들을 이용해서 크롤링하는 간단한 예를 들어보면,
from selenium import webdriver
from bs4 import BeautifulSoup
# 라이브러리로부터 사용할 패키지 import
driver = webdriver.Chrome('driver/chromedriver')
driver.get ("https://movie.naver.com/movie/bi/mi/basic.nhn?code=199393")
# Chrome 웹드라이버 실행, 네이버 영화페이지 접속
html = driver.page_source
# 페이지 소스를 가져온다
bs = BeautifulSoup(html)
result = bs.find("div" , class_="story_area")
result = bs.prettify ()
print(result)
# 페이지 소스를 받는 bs라는 BeautifulSoup객체 생성
# BeautifulSoup의 find, prettify 모듈을 실행
# => div, class = "story_area"인 태그를 찾아서 정렬
# 화면에 출력
a = open("story.txt" ,"w" , encoding="utf-8")
a.write(str(result))
# 문자열로 형변환후 쓰기
a.close()
'클라우드 아키텍트 양성과정' 카테고리의 다른 글
| [TIL.21.1.7 ~ 21.1.14] JQuery 연습 (0) | 2021.02.08 |
|---|---|
| [TIL.21.1.7 ~ 21.1.14] HTML 실습문제 (0) | 2021.02.01 |
| [TIL.20.12.22~28] 관계형 데이터 베이스 설계 (0) | 2021.01.28 |
| [TIL.20.12.22~28] Python과 MySQL (0) | 2021.01.27 |
| [TIL.20.12.22~28]데이터베이스 와 MySQL -2 (0) | 2021.01.26 |
댓글