https://sw-ing.tistory.com/34
requests
파이썬에서 HTTP 통신을 가능하게 해주는 모듈
beautifulsoup과 함께 웹 크롤링을 하거나 api 통신이 필요할 때 사용됨
requests 요청에 존재하는 method:
(장고나 스프링 같은 프레임워크를 다룰 때 필수!)
- GET : 데이터 정보 요청
- POST : 데이터 생성 요청
- PUT : 데이터 수정 요청
- DELETE : 데이터 삭제 요청
requests 요청시 서버에서 내려주는 응답(response):
- 내용(content) : 서버에서 사용자에게 주는 응답 본문
- 상태 코드(status code) : 서버의 상태 표시
requests 모듈을 사용하기 위해 설치해야 하는 패키지:
pip install requests
👇 상태 코드의 종류
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
- 2xx - 성공
- 3xx - 페이지 리다이렉션
- 4xx - 클라이언트 오류
- 5xx - 서버 오류
👇 다양한 http 요청을 간편하게 테스트 할 수 있는 사이트
https://jsonplaceholder.typicode.com/
import requests
from pprint import pprint
# 통신 할 base url 지정
# 1번 사용자 정보를 받아오기 위해 users/1 경로에 get 요청
r = requests.get(f"{url}users/1")
pprint({
"contents": r.text,
"status_code": r.status_code,
})
import requests
from pprint import pprint
# 통신 할 base url 지정
# 데이터 생성에 사용될 값 지정
data = {
"name": "sparta",
"email": "sparta@test.com",
"phone": "010-0000-0000",
}
# 사용자를 생성하기 위해 users 경로에 data를 담아 post 요청
r = requests.post(f"{url}users", data=data) # put, delete도 똑같다
pprint({
"contents": r.text,
"status_code": r.status_code,
})
json
javascript Object Notation, .json 확장자를 사용
데이터를 저장하거나 데이터 통신을 할 때 주로 사용
key:value 쌍으로 이루어져 파이썬의 딕셔너리와 서로 변경할 수 있다
json 형태로 내려주는 사이트만 입력 가능!
import json
import requests
# 해당 사이트는 요청에 대한 응답을 json 형태의 문자열로 내려줍니다.
r = requests.get(f"{url}users/1")
print(type(r.text)) # <class 'str'>
# 문자열 형태의 json을 dictionary 자료형으로 변경합니다.
response_content = json.loads(r.text)
print(type(response_content)) # <class 'dict'>
# dictionary 자료형이기 때문에 key를 사용해 value를 확인할 수 있습니다.
print(f"사용자 이름은 {response_content['name']} 입니다.")
csv
comma-separated values, .csv 확장자를 사용
텍스트에 쉼표(,)를 사용해 필드를 구분함
단순 텍스트이기 때문에 텍스트 편집기를 사용해 간단한 csv 파일을 만들 수 있다
읽고 쓰는 속도가 빠르다
# 파이썬에서 csv 파일을 다루기 위해 모듈 import
import csv
csv_path = "sample.csv"
# csv를 list 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.reader(csv_file)
for i in csv_data:
print(i)
# 작업이 끝난 csv 파일을 닫아줍니다.
csv_file.close()
# csv를 dict 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.DictReader(csv_file)
for i in csv_data:
print(i)
csv_file.close()
csv.reader() : list / csv.DictReader() : dict 형태로 읽기
나의 활용 용도에 따라 불러오면 됨
import csv
csv_path = "sample.csv"
# csv 파일을 쓸 때는 newline='' 옵션을 줘서 중간에 공백 라인이 생기는 것을 방지합니다.
csv_file = open(csv_path, "a", encoding="utf-8", newline='') # append로 불러옴
csv_writer = csv.writer(csv_file)
# csv에 데이터를 추가합니다.
csv_writer.writerow(["lee@sparta.com", '1989', "lee", "Seoul"])
csv_file.close()
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.reader(csv_file)
for i in csv_data:
print(i)
csv_file.close()
csv.writer() : 쓰기
데코레이터(decorator)
파이썬의 함수를 장식해주는 역할
해당 함수가 실행될 때 같이 실행됨
선언되는 함수 위에 @decorator 의 형태로 작성
함수의 실행시간 구하기
비슷한 방식으로 사용자 권한 체크하기 등도 가능
함수 인자를 입력받아서도 사용 가능하고
어떤 함수든 데코레이터를 붙이면 원하는 방식으로 코드 실행이 가능하다는 장점