Re:제로부터 시작하는 갓생
[TIL.v1] 25/03/17 본문
< 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도큐읽기 * 메타 API * Naver API |
3/5 | * 크롤링 공부 * 유튜브 playwright python 공부, 구글링 등 |
3/6 | * 여전히 playwright |
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 |