1. 텍스트 데이터의 변환과 교환
- 텍스트 데이터의 변환
1) 우리가 사용하는 텍스트 데이터를 컴퓨터가 이해할 수 있는 형태로 변환하기 위해서, 텍스트 데이터는 문자열로 나타내고 문자열은 다시 인코딩 과정을 거쳐야 한다.
- 데이터의 교환
1) 텍스트 데이터의 변환 과정(Encoding, Decoding)은 여러 대의 컴퓨터에서 데이터를 교환하는 작업에서도 진행이 된다.
2) 프로토콜(protocol) : 인터넷을 통해 데이터를 주고받을 때 어떤 규약에 따라 데이터를 교환하는데 이런 규약을 프로토콜이라 부른다.
3) HTTP : 웹에서 데이터를 주고 받을 때 사용하는 프로토콜 중 하나
- 용어 정리
1) Communication(통신) : 데이터를 보내고 싶은 곳에 원격으로 전송하고 다시 데이터를 수신받는다.
2) HTTP(HyperText Transfer Protocol) : 하이퍼텍스트 전송 프로토콜
3) Protocol(프로토콜) : 통신 규약
4) HyperText : 독자가 즉시 엑세스 할 수 있는 다른 텍스트에 대한 참조(하이퍼 링크) 가 있는 기계(컴퓨터 등)에 표시되는 텍스트
2. 인터넷이란
- 인터넷 : 컴퓨터들 사이의 TCP / IP(Transmission Control Protocol / Internet Protocol)이라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크로 정의된다.
- 인터넷의 시초 : 1960 ~ 70년대 미국 국방부 산하의 고등 연구국의 연구용 네트워크가 시초이다.
- 인터넷 구조 : 아래의 그림과 같다. 양 끝에 Application ~ Datalink까지가 1대의 컴퓨터인 격이다.
3. 소켓 통신
- 소켓이란, 인터넷 연결용 포트를 의미한다. 컴퓨터 네트워킹에서 인터넷 소켓, 혹은 네트워크 소켓은 끝점(Endpoint)을 의미한다.
- 이 소켓에는 번호가 붙어있는데, 이것을 포트(port) 번호라고 부른다.
- 웹 브라우저가 웹세버에 접속할 때는 웹서버의 80번 포트에 접속하는 것이 관례적으로 약속되어 있다.
4. 인터넷 프로토콜 : TCP / IP
- TCP : Transmission Control Protocol -> 소켓 포트 단위의 송수신 프로토콜
- IP : Internet Protocol -> 컴퓨터마다 주어지는 IP 주소 단위의 송수신 프로토콜
- IP는 IP주소 단위 통신이므로 컴퓨터 레벨, TCP는 포트번호 단위 통신이므로 프로그램 레벨 통신 프로트콜이라고 이해하면 되겠다.
- TCP / IP 기반의 Application 프로토콜
1) HTTP : HyperText Transfer Protocol
2) HTTPS : HyperText Transfer Protocol Secure
3) FTP : File Transfer Protocol
4) SSH : Secure Shell (암호화된 네트워크 프로토콜)
5) DNS : Domain Name System
5. Web과 HTTP
- 웹은 1989년 스위스의 입자 물리 연구소의 소프트웨어 공학자인 팀 버너스리에 의해 처음 개념이 고안되었다.
- 웹을 제안했을 때 '인터넷에서 정보를 교환할 때 정보들을 하이퍼텍스트로 연결하자'라고 제안했다.
- 따라서 웹의 문서와 프로토콜 그리고 식별 규칙은 다음과 같다.
1) 표현형식(문서) : HTML(HyperText Markup Language)
2) 전송방법(프로토콜) : HTTP
3) 식별자 : URI(Uniform Resource Identifier)
- 웹의 동작과 HTTP : 웹은 통신 규약으로 HTTP를 사용하고, HTTP는 요청(Request)하고, 응답(Response)하는 서버 / 클라이언트 모델을 따른다.
- HTTP 메세지는 다음 링크를 참고하면 된다. -> https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 아래는 HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA가 현재 공식 HTTP 상태 코드 레지스트리를 관리하고
ko.wikipedia.org
6. API
- 다양한 프로그래밍 언어가 존재하고, 이런 다양한 언어로 무언가 만든다면...변수문제, 함수 반환값 오해 등등 여러 문제점이 있을 것이다.
- 이런 상황을 방지하기 위해 API(Application Programing Interface)를 이용한다.
- API는 다른 여러 애플리케이션 사이에 간편한 인터페이스를 제공한다.
- API는 마치 플러그처럼 어떤 프로그래머가 만들었든, 어떤 구조로 만들었든, 어떤 언어로 만들었든 상관하지 않는다.
- API의 대표적인 종류 : 구글 API, 카카오 API, 트위터 API, 네이버 파파고 API 등이 있다.
7. REST API
- 최근 트렌드가 된 REST API는 이러한 HTTP기반 API의 장점을 극대화하고 HTTP 고유의 특성을 가장 잘 살린 디자인 패턴으로 각광받고 있다.
8. 크롤러 만들기
- 웹에서 데이터를 긁어 오는 작업을 Web Crawler(웹 크롤러)라고 한다.
- 웹페이지 다운로드
1) urllib 패키지 사용하기 -> urlopen(), read(), download()
2) BeautifulSoup,
패키지 사용하기 -> get(), BeautifulSoup(), find(), findAll()
9. 로그인하기
- 쿠키, 세션, 캐시
1) 쿠키 : HTTP 헤더를 기반으로 이루어지는 데이터. 방문자가 데이터를 원하는 형태로 변경할 수 있고, 저장소는 브라우저이다(즉, 클라이언트가 가지고 있다).
2) 세션 : 쿠키를 이용해 데이터를 저장한다. 하지만 쿠키에는 방문자 고유 ID같은 정보만 저장하고 나머지는 웹 서버에 저장한다.
10. 브라우저 제어를 통한 크롤링
- Selenium 소개
1) 웹앱을 테스트하는 웹 프레임워크이다. webdriver의 API를 통해 브라우저를 제어하기 때문에 동적으로 생성되는 사이트 데이터도 크롤링 할 수 있다.
2) find_element_by_css_selector()
'공부 > AIFFEL' 카테고리의 다른 글
FUNDAMENTAL 21. SQL을 이용해 DB와 대화해보자 (0) | 2021.02.19 |
---|---|
Exploration 11 : 뉴스 요약봇 만들기 (0) | 2021.02.19 |
Exploration 10 : 인물사진을 만들어 보자 (0) | 2021.02.16 |
풀잎스쿨 - DeepML(CS231N) Lec. 07 ~ Lec. 09 (0) | 2021.02.15 |
FUNDAMENTAL 19. TF2 API 개요 (0) | 2021.02.15 |