POST请求 、响应、requests库高级用法
常见请求方式POST请求
代码如下
import requestsdata = {'name':'germey','age':'25'}
r = requests.post("https://www.httpbin.org/post",data=data)
print(r.text)
如果请求方式为POST方式,运行结果如下:
{"args": {}, "data": "", "files": {}, "form": {"age": "25", "name": "germey"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "18", "Content-Type": "application/x-www-form-urlencoded", "Host": "www.httpbin.org", "User-Agent": "python-requests/2.32.3","X-Amzn-Trace-Id": "Root=1-6820767b-7088eb304220c10a777f20b6"},"json": null,"origin": "183.250.210.159","url": "https://www.httpbin.org/post"
}
from部分为提交的数据,证明POST请求成功发送了
发送请求后会得到响应,实列如下
import requestsr = requests.get('https://ssr1.scrape.center/')
print(type(r.status_code),r.status_code)
print(type(r.headers),r.headers)
print(type(r.cookies),r.cookies)
print(type(r.url),r.url)
print(type(r.history),r.history)
这里通过status_code属性得到状态码、通过headers属性得到响应头、通过cookies属性得到Cookie、通过url属性得到URL、通过history属性得到请求历史,打印结果如下
<class 'int'> 200
<class 'requests.structures.CaseInsensitiveDict'> {'Content-Type': 'text/html; charset=utf-8', 'X-Frame-Options': 'DENY', 'X-Content-Type-Options': 'nosniff', 'Expires': 'Sun, 11 May 2025 10:15:12 GMT', 'Strict-Transport-Security': 'max-age=15724800; includeSubDomains', 'Server': 'TencentEdgeOne', 'Cache-Control': 'max-age=600', 'Content-Length': '41667', 'Connection': 'keep-alive', 'Date': 'Sun, 11 May 2025 10:11:29 GMT', 'EO-LOG-UUID': '13904436365551972615', 'EO-Cache-Status': 'MISS'}
<class 'requests.cookies.RequestsCookieJar'> <RequestsCookieJar[]>
<class 'str'> https://ssr1.scrape.center/
<class 'list'> []
headers和cookies这两个属性得到的结果分别是CaseInsensitiveDict和RequestsCookieJar对象
状态码则表示响应状态,可以通过这个数字判断数据是否获取成功
requests库还提供了一个内置的状态码查询对象requests.codes,用法如下
import requestsr = requests.get('https://ssr1.scrape.center/')
exit() if not r.status_code == requests.codes.ok else print('请求成功')
通过比较返回码和内置的表示成功的状态码,来保证请求是否得到了正常响应,如果是,就是输出请求成功的消息,否则程序终止运行,这里用requests.code.ok得到的成功状态码是200.
文件上传
import requests
files = {'file':open('favicon.ico','rb')} #favicon.ico 是文件名
r = requests.post('https///www.httpbin.org/post',files=files)
print(r.text)
文件需要和当前脚本保存在同一目录下,需要上传其他文件也只需要更改下代码即可
Cookie设置
获取Cookie实例
import requestsr = requests.get('https://www.baidu.com')
print(r.cookies)
for key,value in r.cookies.items():print(key + '=' + value)
结果如下
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ=27315
这里我们首先调用cookies属性,成功得到Cookie,可以发现它属于RequestCookie]ar 类型。然后调用items 方法将 Cookie 转化为由元组组成的列表,遍历输出每一个Cookie 条目的名称和值,实现对 Cookie 的遍历解析。