REST APIs & HTTP Requests - Part 1
이 동영상에서는 HTTP 프로토콜에 대해 다룹니다. 주요 주제로는 다음과 같습니다: 일관된 리소스 로케이터(URL), 요청(Request), 응답(Response). 이전 섹션에서는 REST API를 간략하게 다루었습니다. HTTP 프로토콜은 웹을 통한 정보 전송의 일반적인 프로토콜로, 많은 종류의 REST API를 포함합니다. REST API는 요청을 보내고 이를 HTTP 메시지를 통해 통신하는 방식으로 작동합니다. 일반적으로 HTTP 메시지는 JSON 파일을 포함합니다.
클라이언트가 웹 페이지를 사용하면 브라우저가 해당 페이지가 호스팅되는 서버에 HTTP 요청을 보냅니다. 서버는 기본적으로 "index.html"과 같은 원하는 리소스를 찾습니다. 요청이 성공하면 서버는 리소스 유형, 리소스 길이 등의 정보를 포함한 HTTP 응답을 클라이언트에게 보냅니다.
일관된 리소스 로케이터(URL)는 웹에서 리소스를 찾는 가장 인기있는 방법입니다. URL을 세 부분으로 나눌 수 있습니다.
- 스키마: 이 프로토콜은 항상 http://입니다.
- 인터넷 주소 또는 기본 URL: www.ibm.com 및 www.gitlab.com과 같은 위치를 찾는 데 사용됩니다.
- 경로: 웹 서버에서의 위치를 나타냅니다. 예: /images/IDSNlogo.png
요청 및 응답 프로세스를 살펴보겠습니다. GET 요청 메서드에 대한 요청 메시지 예시는 다음과 같습니다. 여기서 GET 메서드는 HTTP 메서드로, index.html 파일을 요청합니다. 요청 헤더는 HTTP 요청과 함께 추가 정보를 전달합니다. GET 메서드에서 요청 헤더는 비어 있습니다. 일부 요청에는 본문이 포함되어 있으며, 이에 대한 예시도 제공됩니다.
응답 테이블에는 버전 번호(HTTP/1.0), 상태 코드(200)와 성공을 의미하는 설명 구문(OK)이 포함되어 있습니다. 응답 헤더에는 정보가 포함되어 있으며, 응답 본문에는 요청된 파일(여기서는 HTML 문서)이 포함됩니다.
상태 코드에는 여러 가지 예시가 있으며, 100번대는 정보 응답, 200번대는 성공 응답, 400번대는 클라이언트 오류, 500번대는 서버 오류를 나타냅니다. 예를 들어, 100은 지금까지 모든 것이 정상임을 나타내며, 200은 요청이 성공했음을 나타냅니다. 401은 요청이 인증되지 않았음을 의미하고, 501은 구현되지 않았음을 나타냅니다.
HTTP 요청이 이루어질 때 HTTP 메서드가 전송됩니다. 이것은 서버에 수행할 작업을 알려줍니다. 주요 HTTP 메서드 몇 가지는 다음과 같습니다.
- GET: 서버에서 데이터를 검색합니다.
- POST: 서버에 데이터를 보냅니다.
- PUT: 서버에 있는 데이터를 업데이트합니다.
- DELETE: 서버에서 데이터를 삭제합니다.
다음 동영상에서는 Python을 사용하여 서버에서 데이터를 가져오는 GET 메서드와 서버에 데이터를 보내는 POST 메서드를 적용하는 방법을 다룰 것입니다. 이를 통해 웹 서버와 클라이언트 간의 통신을 이해하고, HTTP 프로토콜을 활용하여 데이터를 요청하고 처리하는 방법을 배울 수 있습니다.
REST APIs & HTTP Requests - Part 2
이 동영상에서는 Python에서 HTTP 프로토콜을 다루는 데 인기 있는 방법인 Requests 라이브러리를 사용하여 HTTP 프로토콜에 대해 논의합니다. 주요 내용은 다음과 같습니다:
- Python의 Requests 라이브러리 개요: HTTP 프로토콜을 쉽게 사용할 수 있는 라이브러리입니다. import requests를 사용하여 라이브러리를 가져옵니다.
- GET 요청: 웹 사이트에서 정보를 검색하는 데 사용됩니다. 예를 들어, r = requests.get('https://www.ibm.com')을 사용하여 www.ibm.com에서 정보를 검색할 수 있습니다.
- POST 요청: 서버에 데이터를 보내는 데 사용됩니다. 예를 들어, payload = {'name': 'Joseph', 'ID': '123'}와 같은 데이터를 포함하는 딕셔너리를 생성하고
requests.post('https://httpbin.org/post', data=payload)을 사용하여 POST 요청을 보낼 수 있습니다. - 쿼리 문자열 사용: GET 메서드를 사용하여 결과를 수정할 수 있습니다.
예를 들어,
payload = {'name': 'Joseph', 'ID': '123'}
를 사용하여 쿼리 문자열을 만들고
requests.get('https://httpbin.org/get', params=payload)을 사용하여 요청을 보낼 수 있습니다. - 응답 처리: 요청에 대한 응답을 처리하고 정보를 추출하는 방법을 학습합니다.
예를 들어, r.status_code, r.headers, r.text 및 r.json()과 같은 속성과 메서드를 사용하여
응답의 상태 코드, 헤더, 본문 및 JSON 형식의 내용을 확인할 수 있습니다.
이 동영상을 통해 Python을 사용하여 HTTP 프로토콜과 함께 작업하고 GET 및 POST 요청을 사용하여 웹 서버와 클라이언트 간의 통신을 처리하는 방법을 배울 수 있습니다.
Optional: HTML for Webscraping
이 동영상에서는 웹 스크레이핑을 위한 Hypertext Markup Language(HTML)에 대해 살펴봅니다. 동영상에서 다루는 주요 내용은 다음과 같습니다.
- 기본 웹 페이지의 HTML 검토: 웹 페이지는 HTML로 구성되어 있으며, 태그라고 불리는 꺽쇠 괄호로 둘러싸인 텍스트 요소들로 구성되어 있습니다.
- HTML 태그의 구성 이해: 예를 들어, HTML 앵커 태그(<a>)는 하이퍼링크를 정의하고, 시작 태그와 종료 태그로 구성되어 있습니다. 태그는 속성을 가질 수 있으며, 이는 속성 이름과 속성 값으로 구성됩니다.
- HTML 트리 이해: HTML 문서는 문서 트리로 불립니다. 태그는 문자열과 다른 태그를 포함할 수 있으며, 이러한 요소들은 해당 태그의 자식 요소입니다.
- HTML 테이블 이해: HTML 테이블은 <table> 태그로 정의되며, 각 테이블 행은 <tr> 태그로 정의됩니다. 테이블 행 셀은 <td> 태그의 집합으로 구성되어 있습니다.
웹 페이지에서 데이터를 추출하려면 먼저 HTML 구조에 대한 기본 지식이 필요합니다. 이 동영상을 통해 웹 페이지의 HTML을 파악하고, 태그의 구성을 이해하며, HTML 트리와 테이블의 구조를 학습할 수 있습니다. 이러한 지식을 바탕으로 Python을 사용하여 웹 페이지에서 원하는 정보를 추출할 수 있습니다.
예를 들어, 간단한 HTML 페이지에서 특정 텍스트를 추출하려고 합니다. 웹 페이지의 HTML 구조는 다음과 같습니다.
<!DOCTYPE html>
<html>
<head>
<title>Example Web Page</title>
</head>
<body>
<h1>Welcome to the Example Web Page!</h1>
<p>This is a paragraph about the web page.</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</body>
</html>
이 HTML 페이지에서,
<h1> 태그에 있는 제목과 <p> 태그에 있는 단락 텍스트,
그리고 <ul> 태그에 있는 목록 항목들을 추출하려고 합니다.
Python에서 BeautifulSoup 라이브러리를 사용하여 이 작업을 수행할 수 있습니다.
from bs4 import BeautifulSoup
html_doc = '''
<!DOCTYPE html>
<html>
<head>
<title>Example Web Page</title>
</head>
<body>
<h1>Welcome to the Example Web Page!</h1>
<p>This is a paragraph about the web page.</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</body>
</html>
'''
soup = BeautifulSoup(html_doc, 'html.parser')
# 제목 추출
title = soup.find('h1').text
print(f'Title: {title}')
# 단락 텍스트 추출
paragraph = soup.find('p').text
print(f'Paragraph: {paragraph}')
# 목록 항목 추출
list_items = soup.find_all('li')
print('List items:')
for item in list_items:
print(f'- {item.text}')
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Title: Welcome to the Example Web Page!
Paragraph: This is a paragraph about the web page.
List items:
- Item 1
- Item 2
- Item 3
'Data Analysis > Data Engineering' 카테고리의 다른 글
IBM Data Engineer - Introduction to Relational Databases (RDBMS) (0) | 2023.04.19 |
---|---|
IBM Data Engineer - Extract, Transform, Load (ETL) (0) | 2023.04.18 |
IBM Data Engineer - Python for Data Science, AI & Development 2 (0) | 2023.04.12 |
IBM Data Engineer - Python for Data Science, AI & Development (0) | 2023.04.05 |
IBM Data Engineer - Introduction to Data Engineering (0) | 2023.04.04 |
댓글