Requests에 대한 urlencode 문제
1. 가끔, 우리의 데이터는 이미 urlencode가 지나간 데이터입니다. 비록 우리가 urlencode를 진행하기를 원하지 않지만, 이것은 다시 urlencode를 한 번 해서 데이터의 면목을 완전히 잃게 합니다.
2. 때때로 우리는 urlencode를 원하지만 인코딩된 문자 집합에 대한 요구가 있지만 그것을 할 수 없을 뿐만 아니라 기본적인 urlencode로 데이터의 면모를 바꾸기도 한다.
requests에서 urlencode의 대략적인 규칙:
get 요청에 대해 Requests는 인자가 urlencode를 진행했는지 자동으로 판단합니다
post 요청에 대해 데이터가 사전 형식이라면 urlencode(파라미터가 urlencode를 거쳤든 안 거쳤든 상관없음)를 자동으로 강제합니다. 만약 데이터가 문자열 형식이라면 파라미터가 urlencode를 거쳤는지 자동으로 판단하지만, 이렇게 사용하려면 헤더 {'Content-Type': '응용 프로그램/x-ww-form-urlencoded'}
그래서 문제1:
우리는post 요청을 사용할 때 사전 형식의 매개 변수를 문자열로 바꾸고 헤더스를 더하면 해결할 수 있다
headers={'Content-Type': 'application/x-www-form-urlencoded'}
'''
data={'a':'%E5%BE%B7%E7%8E%9B%E8%A5%BF%E4%BA%9A','b':'123'}
=>
data="a=%E5%BE%B7%E7%8E%9B%E8%A5%BF%E4%BA%9A&b=123"
'''
문제2:
데이터를 필요한 문자 인코딩의urlencode로 바꾸고 헤더를 추가하면 됩니다
from urllib.parse import urlencode
import requests
headers={'Content-Type': 'application/x-www-form-urlencoded'}
data={'a':' ','b':'132'}
data=urlencode(data,encoding='gb2312')
r=requests.post(url,headers=headers,data=data)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.