자 저희가 python을 잘 활용하기 위해서는 웹 크롤링을 자세히는 아니여도 활용 할 수 있어야 됩니다.
항상 데이터를 하나하나 타이핑해서 수집할 수는 없지 않습니까 ㅎㅎ;;;
오늘 부터는 데이터 수집을 같이 알아가 봅시다.
데이터 수집 방식
- 웹에서 데이터를 수집하는 방식에는 크게 두가지 방식이 존재
- API(Application Programming Interface)
- 웹 크롤링(Web Crawling)

이번 포스팅에서는 API먼저 알아 보겠습니다.
API
- 응용 프로그램이 서로 데이터를 주고받는 방법을 제공하는 인터페이스
- 특정 데이터 제공자가 정해진 규격으로 데이터를 전달(JSON or XML)
- 예)
- 날씨 정보 제공 API
- 소셜 미디어 API
- 구글 지동 API
- 내 서버에서 내 클라이언트로 API 제공(프론트엔드 - 백엔드)

API는 위 그림과 같은 절차를 통해 이루어 집니다.
작동 방식에서 JSON에서 응답을 처리해야 하니 이제 JSON에 대해서 알아 봅시다.
JSON
- JavaScript Object Notation의 약자
- 데이터를 문자열의 형태로 나타내기 위해서 사용
- 즉, 데이터를 표시하는 방법 중 하나
- 네트워크를 통해 다른 시스템들이 소통할 때 사용하는 경량의 DATA 교환 형식
- 자바스크립트에서 파생되었으나 현재는 다른 프로그래밍 언어에서도 지원하는 데이터 포맷
- 가독성이 뛰어나 컴퓨터와 사람 모두 해석하기 편함
- JavaScript의 Object를 기반으로 하는 텍스트 형식
- Python 딕셔너리와 유사
- key 이름을 큰 따옴표("KEY-NAME")로 감싸는 차이점이 있음
- 문자열, 숫자(정수, 실수), 불리언(true, false), 중첩된 객체와 배열 저장도 가능함
Client와 Server가
JSON 이라는 특별한 형식의 데이터로 정보를 주고 받는다.
JSON를 알아 보았습니다.
근데 이제 API는 Json만 이용해서 응답처리 하였다고 하였지만, 저희가 자바스크립를 쓰지는 않으니까 다른 방벙이 있어야 겠죠?
그렇기에 우리는 주로 HTTP통긴을 통해 데이터를 주고받습니다.
API HTTP 통신
- HTTP란? Hypertext Transfer Protocal
- 인터넷 상에서 데이터를 주고 받기 위한 프로토콜 (약속)
- 클라이언트는 서버에게 지원을 요청(request)하고, 서버는 클라이언트에게 요청을 처리해서 응답(response)
- API는 주로 HTTP 통신을 통해 데이터를 주고받음
- API는 Rest API나 Restful API라고 불림
여기서 REST란?
REST는 Representational State Transfer의 약자로, 로이 필딩(Roy Fielding)이 2000년에 그의 박사학위 논문에서 소개된 웹 아키텍쳐 스타일 불라불라~~~~~
적당히,클라이언트와 서버 간의 경량 통신을 가능하게 하며, 웹 기반 소프트웨어 어플리케이션에서 널리 사용되는 API기능이라고 생각하시면 될 것같습니다!
아래는 REST특징과 기능들을 설명하겠습니다. 아마 실습은 없을 겁니다....
지루하겠지만, 필요한 내용이니 꼭 같이 읽어봅시다.
Rest 특징
- 리소스(Resource) : REST는 모든 것을 리소스로 간주
- 리소스란 웹 소비스에서 제공하는 모든 것을 의미합니다. 데이터, 기능, 서비스 등 어떠한 형태의 정보든지 리소스로 간주
- URI(Uniform Resource Identifier) : 각 리소스는 고유한 식별자인 URI를 가지며, 이를 통해 리소스에 접근
- HTTP 메서드 활용 : HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 조작
- 상태를 관리하지 않음(Stateless): REST 아키텍처는 상태를 관리하지 않으며, 각 요청은 독립적으로 처리되며, 서버는 요청에 필요한 모든 정보를 포함하고 있어야 함
- 캐시 처리 가능(Cacheable) : REST 리소스는 캐싱이 가능하도록 설계되어, 클라이언트나 중개 서버가 캐시를 활용하여 효율적으로 리소를 관리할 수 있음
- Client-Server : 클라이언트(사용자 인터페이스)와 서버(데이터 스토리지)가 분리되어 있어 각각 독립적르오 발전
GET(조회)
- 역할 : 서버로부터 리소스를 조회
- URL로 리소스의 정보를 요청
- 서버는 요청한 리소스의 정보를 응답으로 전달
- 서버의 상태나 데이터를 변경시키지 않음
- 캐싱을 활용하여 자주 요청되는 데이터를 효율적으로 전달
POST(생성)
- 역할: 서버에 새로운 리소스를 생성
- URL롤 요청 시 새로운 데이터를 서버로 전송
- 서버는 요청 데이터를 처리하여 새로운 리소스를 생성하거나 해당 데이터를 저장
- 서버의 상태나 데이터를 변경시키는 메서드로 주의새서 사용
PUT/PATCH(갱신)
- 역할 : 서버의 자원을 갱신
- PUT : 리소스 전체르 업데이트
- PATCH : 리소스의 일부분을 업데이트
- 클라이언트는 수정하고자 하는 리소스의 새 데이터를 서버로 보냄
- 서버는 이 데이터를 사용하여 리소스를 업데이트하고, 성공 여부를 클라이언트에게 알림
DELETE(삭제)
- 역할 : 리소스를 삭제
- 클라이언트가 특정 리소스의 삭제를 요청하면, 서버는 해당 리소스를 삭제하고 결과를 클라이언트에게 알림
- 서버의 데이터가 삭제되므로 주의해서 사용
자 이제까지 정리한 기능들을 한눈에 보기 좋게 정리해보도록 하겠습니다.

그럼 요청과 응답의 종류에는 무엇이 있을까요?
막상 이런 질문을 들으면 대답 질문 말고는 답이 잘 안나오게 됩니다.
하지만, 데이터 세상에서 그냥 맞아요 틀려요와 같은 간단한 대답만을 요청하지 않습니다.
그러니 요청과 응답에 대해서도 알아봅시다.
요청(Request)
- URL : 요청 대상의 주소
- HTTP 메서드 : 요청의 종류(GET, POST등)
- Headers : 요청의 부가 정보(예: 인증 토큰, Content-Type)
- Body: 요청에 포함되는 데이터 (POST, PUT, PATCH에서 사용)
응답(Response)
- HTTP 상태코드 : 요청 성공 또는 실패를 나타냄.
- Headers : 응답의 부가 정보 (예: Content-Type, 날짜)
- Body : 요청 결과 데이터 (JSON, XML 등)
이제 이 메소드를 사용 할 수있게 해주는 모듈을 다운로드 받아야 겠죠?
pip install requests 라고 conda promport나 이제 vs코드에 터미널 창에 입력하시면 됩니다.
다운로드 받으셨다면 아주 간단한 실습 하나만 하고 포스팅을 마치게 습니다.
실습(외부 API에서 데이터를 가져옴)
이번 실습은 예시 코드를 먼저 보여드릴테니 여러가지 형태로 한번 변형해서 사용해 보시길 바랍니다.

법률 정보와 같은 내용이 불려줘 왔다면 성공한것입니다.
아 저기 status_code가 뭐지 하실텐데 여러분 사이트같은데 들어가실때 가끔 오류코드라고 404오류 500오류 등등 보시지 않으셨나요? 그런 코드들을 status_code라고 합니다.

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

'데이터 가져오기' 카테고리의 다른 글
| Python 데이터 beautifulsoup (1) | 2024.12.12 |
|---|---|
| 데이터 가상환경 설정 (0) | 2024.12.11 |
| 데이터 CSS (0) | 2024.12.10 |
| [데이터] 데이터 수집과 웹 기초 (2) (3) | 2024.12.09 |