요청 모듈을 사용하여 Python에서 양식 데이터 게시
이 튜토리얼은 Python requests
모듈에 대해 설명하고 이 모듈을 사용하여 Python에서 양식 데이터를 게시하는 방법을 보여줍니다.
requests
모듈을 사용하여 Python에서 양식 데이터 게시
Python을 사용하여 웹 페이지에 액세스하고 웹 페이지에 콘텐츠를 게시할 수도 있습니다.
httplib
, urllib
, httplib2
등과 같은 다른 모듈이 있든 관계없이 Python의 requests
모듈은 가장 단순하며 GET
및 POST
메서드를 포함하는 강력한 프로그램을 작성할 수 있습니다.
requests
라이브러리는 정의된 URL에 대한 HTTP 요청을 생성하기 위한 Python의 주요 측면 중 하나입니다.
POST
요청 방법 소개
World Wide Web HTTP는 POST
요청 방법을 지원합니다. 형식을 고려할 때 POST
요청 방법은 웹 서버가 요청 메시지의 본문에 포함된 데이터를 수락하여 분명히 저장하도록 요청합니다.
파일을 업로드하거나 완성된 웹 양식을 제출하는 데 자주 사용합니다. 예를 들어 post()
는 POST
요청을 지정된 URL로 보냅니다. 일부 데이터를 서버로 보내야 할 때도 사용할 수 있습니다.
POST
요청에 대한 주요 사실
- 데이터 길이에 대한 제약이 없으며 필요에 따라 설정합니다.
- 브라우저 히스토리에 남지 않습니다.
- 절대 캐시되지 않습니다.
- 북마크가 될 수 없습니다.
Python에 requests
모듈 설치
post()
메서드를 사용하는 데 필요한 requests
모듈은 다음 명령을 사용하여 설치할 수 있습니다.
python -m pip install requests
또는
pip install requests
pipenv
가 Python 패키지를 관리하는 경우 아래 명령을 사용할 수 있습니다.
pipenv install requests
requests
모듈이 설치되면 다음과 같이 가져와서 프로그램에서 사용할 수 있습니다.
import requests
이제 requests.post()
메서드를 사용하는 방법은 무엇입니까? 구문은 무엇입니까? 아래에서 배워봅시다.
통사론:
requests.post(url, data={key: value}, json={key: value}, args)
여기서 args
는 0
과 같거나 아래 매개변수로 명명된 인수 중 그 이상입니다.
모수 | 설명 |
---|---|
url |
요청 URL은 중요한 부분입니다. |
data |
선택 과목. 사전, 튜플의 목록, 바이트 또는 파일 객체가 지정된 URL로 전송됩니다. |
json |
선택 과목. 지정된 URL로 이동할 JSON 개체입니다. |
files |
선택 과목. 지정된 URL로 전달할 파일의 디렉토리입니다. |
allow_redirects |
선택 과목. 리디렉션을 활성화 또는 비활성화하는 부울입니다. 기본값은 True 이며 리디렉션을 허용함을 의미합니다. |
auth |
선택 과목. 특정 HTTP 인증을 활성화하는 튜플입니다. 기본값은 없음 입니다. |
cert |
cert file 또는 key 를 지정하는 문자열 또는 튜플. 기본값이 없음 인 경우 선택 사항입니다. |
cookies |
지정된 URL로 보낼 쿠키의 사전은 선택 사항이며 기본값은 None 입니다. |
headers |
선택 사항, 기본 없음 , 정의된 URL로 보낼 HTTP 헤더의 사전입니다. |
proxies |
선택 사항, 기본 없음 , 프록시 URL에 대한 프로토콜 사전. |
stream |
False (다운로드됨) 또는 True (스트리밍됨) 여부에 대한 응답의 부울 표시입니다. 선택 사항, 기본값 False . |
timeout |
선택 사항으로, 클라이언트가 연결 및/또는 응답을 보낼 때까지 대기한 시간을 나타내는 숫자입니다. 기본값은 없음 입니다. 이는 연결이 닫힐 때까지 요청이 계속됨을 의미합니다. |
verify |
서버의 TLS 인증서 여부를 확인하기 위한 부울 또는 문자열 표시입니다. 선택 과목. 기본값은 True 입니다. |
post()
메서드의 응용
아래 코드 울타리는 사용자가 post()
메서드를 통해 httpbin 웹 사이트에 데이터를 게시하고 게시 방법에 대한 응답을 받는 post()
메서드의 사용법을 보여줍니다.
import requests
values = {"username": "user", "password": "test"}
result = requests.post("https://httpbin.org/post", data=values)
print(result.text)
출력:
많은 정보를 포함하는 응답 개체
가 수신됩니다. 먼저 username
이 user
이고 password
가 test
인 키와 값이 있는 form object
입니다. 그런 다음 header object
에는 Next
, JSON
, origin
및 URL
속성이 포함됩니다.
여러 부분으로 인코딩된 파일을 게시하려면 post()
메서드의 file 속성
을 사용하여 서버에 파일을 전송하여 여러 부분 POST
요청을 만듭니다.
import requests
files = {"file": open("test.txt", "rb")}
url = "https://httpbin.org/post"
result = requests.post(url, files=files)
print(result.text)
출력:
출력으로 빈 데이터 객체가 반환되었고 값이 파일의 내용(Test Text
인 작업 디렉토리에서 만들어진 test.txt
파일의 내용)인 파일 속성인 파일 객체를 얻었습니다.
세션 내에서 POST
요청을 하려면 URL에 쿠키를 설정한 다음 다시 요청하여 쿠키가 설정되었는지 평가하십시오. 세션은 사용자가 모든 요청에서 동일한 데이터를 보내야 하는 경우에도 유용합니다. 예를 들어:
import requests
s = requests.Session()
s.cookies.update({"month-visit": "July"})
request01 = s.get("http://httpbin.org/cookies")
print(request01.text)
# outputs details on the "month-visit" cookie
request02 = s.get("http://httpbin.org/cookies", cookies={"year-visit": "2022"})
print(request02.text)
# outputs details on "month-visit" and "year-visit" cookie
request03 = s.get("http://httpbin.org/cookies")
print(request03.text)
# outputs details on the "month-visit" cookie
출력:
출력에서와 같이 month-visit
세션 쿠키는 세 가지 요청 모두와 함께 전달됩니다. 그러나 연도 방문
쿠키는 두 번째 요청 중에만 전달됩니다.
세 번째 요청에는 연간 방문
쿠키가 없습니다. 따라서 이는 개별 요청에 설정된 쿠키 또는 기타 데이터가 다른 세션 요청과 함께 전달되지 않음을 확인합니다.
post()
의 이점을 고려할 때 사용자가 입력한 정보가 URL 쿼리 문자열이나 서버 로그에 절대 표시되지 않기 때문에 GET
방식보다 더 안전합니다.
우리가 보낼 수 있는 데이터 양에는 훨씬 더 큰 제한이 있으며, POST
방식을 사용하여 파일을 업로드하는 것처럼 사람이 텍스트 또는 바이너리 데이터를 보낼 수 있습니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.