본문 바로가기
클라우드 아키텍트 양성과정

[TIL.21.1.7 ~ 21.1.14]인터넷과 웹

by 종바깅 2021. 2. 1.

[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() 

 

댓글