[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)# 禁用客户端重定向处理。默认开启。
相关推荐
小北方城市网18 小时前
Spring Boot 接口开发实战:RESTful 规范、参数校验与全局异常处理
java·jvm·数据库·spring boot·后端·python·mysql
Jinuss18 小时前
源码分析之React中scheduleUpdateOnFiber调度更新解析
前端·javascript·react.js
白云千载尽18 小时前
ssh远程连接之后的scp命令工具来操作文件
运维·服务器·ssh
一位搞嵌入式的 genius18 小时前
深入理解 JavaScript 异步编程:从 Event Loop 到 Promise
开发语言·前端·javascript
m0_5649149218 小时前
Altium Designer,AD如何修改原理图右下角图纸标题栏?如何自定义标题栏?自定义原理图模版的使用方法
java·服务器·前端
一路向阳~负责的男人18 小时前
PyTorch / CUDA 是什么?它们的关系?
人工智能·pytorch·python
蜘蛛小助理18 小时前
【进销存实战】用蜘蛛表格搭建自动化库存管理系统,缺货预警+出入库统计一键搞定
自动化·进销存·多维表格·蜘蛛表格
想进部的张同学18 小时前
RK3588开发板安装GStreamer硬件加速插件完整指南 成功版本(docker)
运维·docker·容器·rkmpp
aloha_78918 小时前
乐信面试准备
java·spring boot·python·面试·职场和发展·maven
方安乐18 小时前
react笔记之useCallback
前端·笔记·react.js