> 백엔드 개발 > 파이썬 튜토리얼 > 요약 및 요약 1: 요청 사용

요약 및 요약 1: 요청 사용

coldplay.xixi
풀어 주다: 2020-11-19 17:17:55
앞으로
3972명이 탐색했습니다.

python 동영상 튜토리얼이 칼럼은 Requests

요약 및 요약 1: 요청 사용

이 글은 공식 문서를 기반으로 구성되었으며, 데이터 인터페이스는 모두 공식 문서에서 제공됩니다

에 따르면 공식 문서, 요청은 Non-GMO Python HTTP 라이브러리입니다. 강력한 기능과 간결한 구문. Python으로 웹 프로그램을 작성할 때 요청은 불가피하다고 할 수 있습니다.
요청은 사용하기 쉽지만 대부분의 기능을 자주 사용할 필요는 없습니다. 하지만 사용해야 할 때 문서를 확인하는 것은 더 번거롭습니다. 그래서 나도 정리하고 요약하고 싶다. 자신과 타인 모두에게 편리합니다.

첨부된 파일은 공식 문서 주소입니다

# 安装。注意,千万别安装成request,别少了末尾的spip install resquests复制代码
로그인 후 복사

기본 요청

먼저 요청 모듈을 가져옵니다

import requests复制代码
로그인 후 복사

다양한 요청 방법

r = requests.get('http://httpbin.org/get')# post带参r = requests.post('http://httpbin.org/post', data={'key': 'value'})
r = requests.put('http://httpbin.org/put', data={'key': 'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')复制代码
로그인 후 복사

요청을 사용하면 매개변수 키-값 쌍을 params에 전달하여 URL 매개변수를 전달할 수 있습니다. 코드 >변수, 요청은 자동으로 해당 URL을 구축합니다. <code>params变量,requests会自动构建好对应的URL。

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)# 注意,字典里值为的None的键并不会被拼接到URL中# 同时,你还可以将列表作为值进行传入payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('http://httpbin.org/get', params=payload)
print(r.url)>>> http://httpbin.org/get?key1=value1&key2=value2&key2=value3复制代码
로그인 후 복사

响应内容

通过text返回响应内容的Unicode型数据。requests会自动解码来自服务器的内容。

# 在需要读取文本信息时,可使用text进行获取r = requests.get('http://httpbin.org/get')
r.text复制代码
로그인 후 복사

通过content返回响应内容的bytes型(二进制)数据。

# 在需要获取文件时,可通过content获取# 例如获取一张图片并保存r = requests.get('http://httpbin.org/get/xxx.jpg')with open('example.jpg', 'wb') as img:
    img.write(r)复制代码
로그인 후 복사

通过json()处理响应的json数据。

import requests
r = requests.get('http://httpbin.org/get')
r.json()复制代码
로그인 후 복사

定制请求头

为请求添加头部,只需要传递dictheaders参数即可

# HTTP头部大小写是不敏感的headers = {    'token': token,    'content-type': 'application/json'}
url = 'http://httpbin.org/get'r = requests.get(url, headers=headers)复制代码
로그인 후 복사

POST发送非表单形式数据

在post请求带有请求体时,可以使用json模块对数据进行编码

url = 'http://httpbin.org/get'body = {'data': data}
r = requests.post(url, data=json.dumps(body))复制代码
로그인 후 복사

除了使用json进行编码外,还可以直接对json参数进行传值

url = 'http://httpbin.org/get'body = {'data': data}
r = requests.post(url, json=body)复制代码
로그인 후 복사

通过POST上传文件

使用open方法以二进制形式读取文件后,即可方便地进行文件上传

url = 'http://httpbin.org/post'files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)# 同时,可以显式地设置文件名、文件类型和请求头url = 'http://httpbin.org/post'files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post(url, files=files)复制代码
로그인 후 복사

发送cookie

可通过给参数cookies传参进行cookie的传递

url = 'http://httpbin.org/cookies'cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)# 在跨域使用时,可以通过RequestsCookieJar进行域名和路径的定义jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'r = requests.get(url, cookies=jar)复制代码
로그인 후 복사

获取响应信息

通过status_code获取响应状态码

r = requests.get('http://httpbin.org/get')
r.status_code>>> 200# requests内置一个状态码查询对象print(r.status_code == requests.codes.ok)>>> True# 如果发生了4xx或者5xx的错误响应,可以使用raise_for_status()函数来抛出异常bad_r = requests.get('http://httpbin.org/status/404')
bad_r.status_code>>> 404bad_r.raise_for_status()# 如果请求没有发生错误,则raise_for_status()返回None复制代码
로그인 후 복사

通过headers获取响应头

r = requests.get('http://httpbin.org/get')
r.headers>>> {       'content-encoding': 'gzip',       'transfer-encoding': 'chunked',       'connection': 'close',       'server': 'nginx/1.0.4',       'x-runtime': '148ms',       'etag': '"e1ca502697e5c9317743dc078f67693f"',       'content-type': 'application/json'
   }   
# 同时,我们可以通过任意大小写形式来访问这些响应头字段r.headers['Content-Type']>>> 'application/json'r.headers.get('content-type')>>> 'application/json'复制代码
로그인 후 복사

通过cookies获取cookie数据

url = 'http://example.com/some/cookie/setting/url'r = requests.get(url)
r.cookies['example_cookie_name']>>> 'example_cookie_value'复制代码
로그인 후 복사

重定向与请求历史

默认情况下,除了HEAD请求,requests会自动处理所有重定向
可以通过history

# 例如Github 将所有的HTTP请求重定向到HTTPSr = requests.get('http://github.com')

r.url>>> 'https://github.com/'r.status_code>>> 200# 如果使用的时GET、OPTIONS、POST、PUT、PATCH、DELETE请求时,可以通过设置allow_redirects=False来禁用重定向r = requests.get('http://github.com', allow_redirects=False)
r.status_code>>> 301# 也可以通过设置allow_redirects=True来启用HEAD请求的重定向r = requests.head('http://github.com', allow_redirects=True)复制代码
로그인 후 복사

응답 내용

text를 통해 응답 내용의 유니코드 데이터를 반환합니다. 요청은 서버의 콘텐츠를 자동으로 디코딩합니다.

rrreee

content를 통해 응답 콘텐츠의 바이트(바이너리) 데이터를 반환합니다.

rrreee
json()을 통해 응답 json 데이터를 처리합니다.

rrreee

요청 헤더 사용자 정의요청에 헤더를 추가하고 dictheaders 매개변수에 전달하세요rrreee

POST가 비형식 데이터를 보냅니다게시 요청에 요청 본문이 있는 경우 json 모듈을 사용하여 데이터를 인코딩할 수 있습니다

rrreee json을 사용하면 json 매개변수의 값을 직접 전달할 수도 있습니다

rrreee

POST를 통해 파일 업로드 🎜🎜open 메소드가 바이너리 형식의 파일을 읽은 후 파일을 쉽게 업로드할 수 있습니다🎜rrreee

쿠키 보내기🎜🎜매개변수를 전달할 수 있습니다 쿠키 code>쿠키를 전달하는 매개변수 전달🎜rrreee<h4 data-id="heading-7">응답 정보 가져오기🎜🎜<code>status_code를 통해 응답 상태 코드 가져오기🎜rrreee🎜headers

code>응답 헤더 가져오기🎜rrreee🎜쿠키를 통해 쿠키 데이터 가져오기🎜rrreee

리디렉션 및 요청 기록🎜🎜기본적으로, HEAD 요청을 제외한 모든 리디렉션은 자동으로 처리됩니다🎜history 메소드를 통해 리디렉션을 추적할 수 있습니다🎜rrreee🎜마지막으로🎜🎜이 글은 요청의 기본 사용법을 요약한 것입니다. 나중에 공식 문서를 참조하여 일부 고급 사용법을 요약하겠습니다. 요청의 고급 사용법을 정리해 보겠습니다. 요청을 능숙하게 사용하면 웹 개발을 할 때 절반의 노력으로 두 배의 결과를 얻는 효과가 있습니다. 🎜🎜🎜🎜관련 무료 학습 권장사항: 🎜🎜🎜python 비디오 튜토리얼🎜🎜🎜🎜

위 내용은 요약 및 요약 1: 요청 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿