Re:제로부터 시작하는 갓생

[TIL.v1] 25/03/17 본문

Daily/TIL

[TIL.v1] 25/03/17

기븜 2025. 3. 17. 10:59
< TIL 반드시 들어가야 할 내용 >
1. 문제: 어떤 문제가 있었는지
2. 시도: 내가 시도해 본 것들 (자세히 쓰기)
3. 해결: 어떻게 해결했는지
4. 배움: 뭘 새롭게 알았는지 (자세히 쓰기)

나 분명 뭔가 많이 봤는데 왜 기억이 안나...뭐드라...

# 1.

출근한 뒤 오늘 하루를 돌아보자

* 오전

네이버 api 자료에 대해 간단히 구성 배우기-> 참고자료 경로 전달받음-> 추후 플젝 투입 시기 안내받음-> API 자료마저 읽기

* 오후

14:00 프로젝트 진행상황 점검을 위한 팀 회의(라고 쓰고 코드리뷰라고 읽는다)

API 자료 파악 진행 중(api eng doc, api kor doc, 기존 code, AI자료)

관련 용어 구글링으로 추가 공부

 

계획했지만 오늘 하지 못한 일

API(Rest, Restful, Fast) 공부-> 진행중
네이버 API 국문 & 영문 자료 읽기-> 진행중

Github code review-> 진행중

WBS 수정-> 진행중

주간업무보고서 노션 업데이트-> 목요일진행예정

 

내일 해야 할 일

여전히 Naver API 파악

Github API code review

api code sample try

api code run check

 

이번 주에 확인해야 할 사항
더보기
3/4 * 디지털 마케팅이란 무엇인가?
* 무슨 직종인가?
* 광고 마케팅이란 무엇인가?
* 어떤 종류가 있는가?
* API도큐읽기
* Streamlit
* 메타 API
* Naver API
3/5 * 크롤링 공부
* 유튜브 playwright python 공부, 구글링 등
3/6 * 여전히 playwright
3/7 * 가상환경 종류, 차이
3/10 * API 읽는 법과 필요내용 찾는 법
3/14 * API(REST, RESTFUL, FAST) 

앞으로 해야 할 부분이 Python 고급? 단계이니... 꾸준히 Python 공부..

솔루션 개발요청이 들어올 때 어떤 문서를 보고 지표를 어떻게 써야 하는지 생각

 

배운 점

* 파라미터(Parameter)

- 정의: 특정 작업, 함수에 전달되는 값이나 변수. 작업수행 및 동작제어에 필수요소. REST API와 프로그래밍에서 주로 사용됨

- 특징:

1) 값 전달: 파라미터를 통해 데이터나 정보를 함수와 API에 전달해 작업을 수행

2) 동작제어: 값에 따라 함수나 API 실행 결과를 변경

3) 기본값 설정가능: 전달되지 않은 경우 기본값 사용 가능

4) 유형

쿼리 파라미터: URL 뒤에 추가정보를 전달 (ex. https://api.example.com/users?name=John&age=30)

경로 파라미터: URL 경로에 데이터를 포함 (ex. https://api.example.com/users/123)

헤더 파라미터: 요청 메타데이터를 전달 (ex. Authorization: Bearer <token>)

바디 파라미터: 요청 본문에 JSON데이터를 포함 (ex. {"name": "John", "email": "john@example.com"})

- 구분

1) Python 함수에서 파라미터

목적: local 함수 동작을 동적으로 제어

특징:값을 전달해 작업 수행. 기본값 및 위치/키워드/가변길이 파라미터 지원

# Python 함수에서 파라미터 사용
## 예시 01.
def greet(name="Guest"):  # 단일 파라미터, 기본값 "Guest"
    return f"Hello, {name}!"
### 호출
print(greet("Alice"))  # "Alice"를 name으로 전달-> 출력: Hello, Alice!
print(greet())  # name을 전달하지 않을 경우 기본값 "Guest" 사용-> 출력: Hello, Guest!

## 예시 02.
def greet(name="Guest", age=None):  # 두 파라미터, name 기본값 "Guest", age 기본값 None
    if age:  # age 값이 있을 때 실행
        return f"Hello, {name}. You are {age} years old."
    return f"Hello, {name}!"  # age 값이 없을 때 실행
### 호출
print(greet("Alice", 25))  # name="Alice", age=25-> 출력: Hello, Alice. You are 25 years old.
print(greet())  # name과 age를 전달하지 않을 경우 기본값 사용-> 출력: Hello, Guest!

 

2) REST(Representational State Transfer) API에서 파라미터

목적: 클라이언트와 서버 간 통신을 위해 데이터 전달 및 요청제어에 사용

특징: 데이터를 URL, 헤더, 바디 등으로 전달

종류:

쿼리 파라미터: 검색/필터링

경로 파라미터: 특정 리소스 식별

헤더: 인증, 요청 메타정보

바디: 데이터 생성/업데이트

# REST API 요청을 보내기 위한 requests 라이브러리
import requests

# 쿼리 파라미터 (Query Parameters): 요청 URL에 추가 정보를 전달하여 요청 조건을 설정
## 예: /users?name=John&age=30 -> name과 age를 쿼리로 전달하여 필터링
response = requests.get("https://api.example.com/users", params={"name": "John", "age": 30})

# 경로 파라미터 (Path Parameters): URL 경로의 일부로 데이터를 전달하여 특정 리소스를 식별
## 예: /users/123 -> 특정 user_id(123)에 해당하는 사용자 정보 요청
user_id = 123
response = requests.get(f"https://api.example.com/users/{user_id}")

# JSON 바디 파라미터 (JSON Body Parameters): 요청 본문(Body)에 JSON 데이터 형태로 전달
## 서버 응답(Response): 주로 POST, PUT, PATCH 요청에서 데이터를 생성하거나 수정할 때 사용
data = {"name": "John", "email": "john@example.com"}
response = requests.post("https://api.example.com/users", json=data)
print(response.json())

 

3) 차이점

구분 Python 함수 파라미터 Rest API 파라미터
목적 함수에 데이터 전달 및 동적 동작 지원 서버 요청을 제어하고 필요한 데이터 전달
값의 위치 함수 호출 시 인수로 전달, 정의 내에서 사용 URL, 헤더, 쿼리, 바디등 다양한 방식으로 포함
유형 위치 기반, 키워드, 기본값, 가변 길이 쿼리, 경로, 헤더, 바디
주요 사용 함수내부처리 로직에 사용,
실행 결과에 영향을 주기 위해 사용
API 요청 제어(필터링, 인증, 데이터 전송 등)

 

* REST API

- 정의: 클라이언트와 서버가 HTTP를 통해 데이터를 주고받는 방법

- 예시: 웹사이트에서 '로그인' 버튼 클릭 시 서버와 통신하여 로그인 정보 확인

- HTTP 요청 구성요소

method: 어떤 작업을 할지 나타냄 (GET, POST, PUT, DELETE 등)

URL: 서버의 주소를 의미

Header: 요청에 필요한 추가 정보 담기 (ex. 인증토큰)

Body: 데이터를 담아 서버로 전송 (주로 POST or PUT에서 사용)

- 요청규칙

1) HTTP method 선택

2) URL 설계: 자원 표현해야 함 (ex. https://example.com/users -> 사용자 데이터 요청)

3) 헤더 설정: 필요정보 담기 (ex. Content-Type: application/json)

4) 필요시 바디 설정: JSON형식의 데이터 작성 (ex. { "name": "Joy", "age": 15 })

- Python, Requests 라이브러리 사용한 예시 코드

import requests  # HTTP 요청을 위해 requests 라이브러리를 사용합니다.

# 1. API URL 설정
url = "https://example.com/users"  # 데이터를 요청할 URL

# 2. 헤더 설정
headers = {
    "Content-Type": "application/json",  # 데이터 형식 지정
    "Authorization": "Bearer your_token_here"  # 인증 토큰 추가
}

# 3. 요청 바디 (POST 요청용)
data = {
    "name": "Joy",
    "age": 15
}

# 4. GET 요청 예제 (데이터 가져오기)
response = requests.get(url, headers=headers)  # GET 요청
print(response.json())  # 응답 데이터 출력

# 5. POST 요청 예제 (데이터 보내기)
response = requests.post(url, headers=headers, json=data)  # POST 요청
print(response.status_code)  # 응답 상태 코드 출력

 

* 크롤링 종료시 메소드 차이점

1) drive.quit

- 정의: WebDriver 인스턴스와 함께 열려있는 모든 브라우저 창 종료

- 설명

웹드라이버 세션을 완전히 종료하고 메모리에서 해제

리소스가 완전히 정리되므로 크롤링 작업이 끝났을때 사용하는 것 권장

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# WebDriver 세션 종료
driver.quit()

 

2) drive.close

- 정의: 현재 활성화된 브라우저 창 닫기

- 설명

웹드라이버 인스턴스는 종료되지 않고 그대로 유지

여러개 창이 열려있는 경우 사용중인 특정 창만 닫고 나머지 창은 그대로 열려있음

웹드라이버 인스턴스를 계속 사용할 경우 적합

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# 현재 창만 닫음
driver.close()

 

3) 차이점

Method 동작 용도
driver.quit WebDriver와 모든 브라우저 창을 종료 크롤링 작업 완료 후 세션 완전 종료
driver.close 현재 활성화된 브라우저 창 하나만 닫기 여러 창 중 특정 창만 닫을 때 사용

 

4) 사용 권장

- 크롤링 작업 종료시: driver.quit 사용해 모든 리소스 정리

- 특정 창만 닫고 싶을때: driver.close 사용

 

기타

점심 즉떡... 배고플 때 먹으니 더 맛있다.. 볶음밥까지 클리어

'Daily > TIL' 카테고리의 다른 글

[TIL.v1] 25/03/21  (2) 2025.03.21
[TIL.v1] 25/03/18  (0) 2025.03.18
[TIL.v1] 25/03/13  (0) 2025.03.14
[TIL.v1] 25/03/12  (1) 2025.03.12
[TIL.v1] 25/03/11  (0) 2025.03.11