[Web自动化] Requests模块请求参数

6.3 Requests模块请求参数

6.3.1 为url传递参数

方式一:通过在url地址后带上参数

py 复制代码
url = 'http://front-gateway.mtime.com/unionSearch2?year=2017'
r = requests.get('url')

方式二:通过在get方法中添加params参数

py 复制代码
params = {'year': '2017'}
r = requests.get(url=url, params=params)# 字典传递参数,如果值为None的键不会被添加到url中

params参数仅在get请求中明确使用,尽管在post请求中也可以传递(但通常不推荐,因为POST请求应该通过请求体发送数据)。

6.3.2 定制头和Cookie信息

py 复制代码
import requests
header = {'user-agent': 'my-app/0.0.1'}
Cookie = {'key': 'value'}
r = requests.get('your url', headers=header, Cookies=Cookie)
headers = {'content-type': 'application/json',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)

你可以通过 headers 参数来设置 HTTP 请求的头部信息。这对于模拟浏览器访问、设置认证信息等场景非常有用。

6.3.3 data:发送表单数据

py 复制代码
data = {'some': 'data'}
r = requests.post('your url', data= data)

说明:

1、在post请求中,data参数用于发送表单数据。它可以是一个字典、字节或类文件对象。如果是字典,它会被编码成表单数据(application/x-www-form-urlencoded)。对于JSON数据,应该使用json参数而不是data。

2、对于post请求,data和json是常用的,但在get请求中,data是不被使用的(尽管技术上可以传递,但requests库会忽略它,因为HTTP GET请求不应该有请求体)。

6.3.4 超时设置

py 复制代码
r = requests.get('url', timeout=1)# 设置秒数超时,仅对于连接有效

6.3.5 代理设置

py 复制代码
proxies = {'http':'ip1','https':'ip2' }
requests.get('url', proxies=proxies)
proxies = {"http": http://user:pass@10.10.1.10:3128/}# 代理需要用户名和密码

6.3.6 上传文件

py 复制代码
url = 'http://m.ctrip.com'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

files参数仅在post请求中使用,用于上传文件。

6.3.7 发送json请求

py 复制代码
r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))

6.3.8 身份认证

py 复制代码
r = requests.get('url', auth=('user', 'passwd'))

6.3.9 忽略证书

报错:Caused by SSLError(SSLCertVerificationError(1, 'SSL: CERTIFICATE_VERIFY_FAILED certificate verify failed: self signed certificate (_ssl.c:1091)'))

py 复制代码
requests.get(url, verify=False)# ,忽略证书验证

6.3.10 重定向

py 复制代码
r = requests.get('url', allow_redirects=False)# 禁用客户端重定向处理。默认开启。
相关推荐
NorBugs28 分钟前
飞机大战 Low 版 (Made in AI)
前端
angerdream1 小时前
Android手把手编写儿童手机远程监控App之agentweb如何实现全屏
前端
Inhand陈工1 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
星栈1 小时前
10 分钟跑起第一个 Dioxus 应用:`dx` CLI、`rsx!` 和热更新好不好用
前端·rust·前端框架
码云骑士1 小时前
32-慢查询排查全流程(下)-索引优化实战与最左前缀原则
python
奋斗吧程序媛1 小时前
补充一个小知识点:有关@click.native
前端·vue.js
酣大智1 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
触底反弹1 小时前
🚀 手把手用 HTML5 Canvas 从零打造飞机大战游戏,代码全开源!
前端·javascript·canvas
DJ斯特拉1 小时前
axios快速使用
开发语言·前端·javascript