[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)# 禁用客户端重定向处理。默认开启。
相关推荐
聆风吟º5 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Java后端的Ai之路5 小时前
【Python 教程15】-Python和Web
python
子兮曰6 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
冬奇Lab6 小时前
一天一个开源项目(第15篇):MapToPoster - 用代码将城市地图转换为精美的海报设计
python·开源
吴仰晖6 小时前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神6 小时前
github发布pages的几种状态记录
前端
较劲男子汉8 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
风流倜傥唐伯虎8 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰8 小时前
[python]-AI大模型
开发语言·人工智能·python
Doro再努力8 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim