요청 모듈을 사용하여 Python에서 양식 데이터 게시

Migel Hewage Nimesha 2024년2월15일
요청 모듈을 사용하여 Python에서 양식 데이터 게시

이 튜토리얼은 Python requests 모듈에 대해 설명하고 이 모듈을 사용하여 Python에서 양식 데이터를 게시하는 방법을 보여줍니다.

requests 모듈을 사용하여 Python에서 양식 데이터 게시

Python을 사용하여 웹 페이지에 액세스하고 웹 페이지에 콘텐츠를 게시할 수도 있습니다.

httplib, urllib, httplib2 등과 같은 다른 모듈이 있든 관계없이 Python의 requests 모듈은 가장 단순하며 GETPOST 메서드를 포함하는 강력한 프로그램을 작성할 수 있습니다.

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)

여기서 args0과 같거나 아래 매개변수로 명명된 인수 중 그 이상입니다.

모수 설명
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)

출력:

python에서 양식 데이터를 게시하기 위해 요청 모듈 사용 - 요청 이미지 1

많은 정보를 포함하는 응답 개체가 수신됩니다. 먼저 usernameuser이고 passwordtest인 키와 값이 있는 form object입니다. 그런 다음 header object에는 Next, JSON, originURL 속성이 포함됩니다.

여러 부분으로 인코딩된 파일을 게시하려면 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)

출력:

python에서 양식 데이터를 게시하기 위해 요청 모듈 사용 - 요청 이미지 2

출력으로 빈 데이터 객체가 반환되었고 값이 파일의 내용(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

출력:

python에서 양식 데이터를 게시하기 위해 요청 모듈 사용 - 요청 이미지 3

출력에서와 같이 month-visit 세션 쿠키는 세 가지 요청 모두와 함께 전달됩니다. 그러나 연도 방문 쿠키는 두 번째 요청 중에만 전달됩니다.

세 번째 요청에는 연간 방문 쿠키가 없습니다. 따라서 이는 개별 요청에 설정된 쿠키 또는 기타 데이터가 다른 세션 요청과 함께 전달되지 않음을 확인합니다.

post()의 이점을 고려할 때 사용자가 입력한 정보가 URL 쿼리 문자열이나 서버 로그에 절대 표시되지 않기 때문에 GET 방식보다 더 안전합니다.

우리가 보낼 수 있는 데이터 양에는 훨씬 더 큰 제한이 있으며, POST 방식을 사용하여 파일을 업로드하는 것처럼 사람이 텍스트 또는 바이너리 데이터를 보낼 수 있습니다.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

관련 문장 - Python Requests