[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)# 禁用客户端重定向处理。默认开启。
相关推荐
oMcLin2 小时前
Debian 9 高并发请求导致 Nginx 进程崩溃:调整 worker_processes 和 worker_connections 参数
运维·nginx·debian
Thera7772 小时前
Linux 核心绑定(CPU Affinity)详解:原理、方法与优缺点分析
linux·运维·服务器
不一样的故事1262 小时前
1. 公司质量体系的维护与申办监管•
大数据·运维·人工智能
计算机毕设指导62 小时前
基于微信小程序的个性化漫画阅读推荐系统【源码文末联系】
java·python·微信小程序·小程序·tomcat·maven·intellij-idea
百锦再2 小时前
开发抖音小程序组件大全概述
人工智能·python·ai·小程序·aigc·notepad++·自然语言
小鹏linux2 小时前
【linux】进程与服务管理命令 - setup
linux·运维·服务器
倔强的石头1062 小时前
【Linux指南】进程控制系列(二)进程终止 —— 退出场景、方法与退出码详解
linux·运维·服务器
爱吃生蚝的于勒2 小时前
【Linux】零基础深入学习动静态库+深入学习地址
linux·运维·服务器·c语言·数据结构·c++·学习
不甘平凡的小鸟2 小时前
libcurl+vs2017+openssl编译
linux·运维·服务器