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)# 禁用客户端重定向处理。默认开启。