常见请求方式POST请求
代码如下
import requests
data = {'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 requests
r = 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 requests
r = 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 requests
r = 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 的遍历解析。