Ruquests
## 中文文档 > https://requests.readthedocs.io/projects/cn/zh_CN/latest/ ## 快捷请求 ```python url ='https://leafbackaut.cn' # get请求 r = requests.get(url) # post请求 r = requests.post(url) # put请求 r = requests.put(url) # delete请求 r = requests.delete(url) # head请求 r = requests.head(url) # options请求 r = requests.options(url) ``` ## 请求参数 ### get传参 ```python url ='https://leafbackaut.cn' # 普通传参 # https://leafbackaut.cn?key2=value2&key1=value1 args = {'key1': 'value1', 'key2': 'value2'} r = requests.get(url, params=args) # 列表传参 # https://leafbackaut.cn?key1=value1&key2=value2&key2=value3 args = {'key1': 'value1', 'key2': ['value2', 'value3']} r = requests.get(url, params=args) ``` ### post传参 ```python url ='https://leafbackaut.cn' # 普通传参 args = {'key1': 'value1', 'key2': 'value2'} r = requests.post(url, data=args) # 一对多传参(多个元素使用一个key) args = (('key1', 'value1'), ('key1', 'value2')) r = requests.post(url, data=args) # 传递json参数 args = {'some': 'data'} r = requests.post(url, json=args) r = requests.post(url, data=json.dumps(args)) ``` ## 响应内容 ```python url ='https://leafbackaut.cn' r = requests.get(url) # 响应的文本(Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。) r.text # 改变响应文本的编码 r.encoding = 'UTF-8' # 二进制响应内容 r.content # tip:使用二进制响应内容创建一张图片 from PIL import Image from io import BytesIO i = Image.open(BytesIO(r.content)) # json响应内容 r.json() # 原始响应内容(确保在原始请求中设置了stream=True) r.raw ``` ## 自定义请求头 ```python url = 'https://leafbackaut.cn' headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers) ``` ## 响应状态码 ```python r = requests.get('https://leafbackaut.cn') r.status_code # 判断状态码是否ok r.status_code == requests.codes.ok ``` ## 响应头与请求头 ```python url ='https://leafbackaut.cn' r = requests.get(url) # 获取响应头 r.headers # 获取请求头 r.request.headers ``` ## Cookie ```python url = 'https://leafbackaut.cn' # 获取cookie r = requests.get(url) r.cookies # 添加cookie cookies = dict(cookies_are='working') r = requests.get(url, cookies=cookies) # 操作cookie对象 # 适合跨域名或跨路径使用 jar = requests.cookies.RequestsCookieJar() jar.set('tasty_cookie', 'yum', domain=url, path='/path1') jar.set('gross_cookie', 'blech', domain=url, path='/path2') # 使用第一个cookie r1 = requests.get(url+'/path2', cookies=jar) # 使用第二个cookie r2 = requests.get(url+'/path2', cookies=jar) ``` ## 请求历史与重定向 ```python url ='https://leafbackaut.cn' r = requests.get(url) r.history # 禁用重定向 r = requests.get(url, allow_redirects=False) # 如果使用head请求,则需要设置参数allow_redirects=True r = requests.head(url, allow_redirects=True) r.history ``` ## 设置超时 ```python url ='https://leafbackaut.cn' # 同时设置connect和read的timeout r = requests.get(url, timeout=10) # 分别设置connect和read的timeout r = requests.get(url, timeout=(10, 20)) # 永远等待 r = request.get(url, timeout=None) ``` ## 会话对象 会话对象在同一个Session实例发出的所有请求之间保持cookie。 ```python url = 'https://leafbackaut.cn' s = requests.Session() # 请求第一个网站,设置cookie s.get(url) # 不同的请求得到相同的cookie r1 = s.get(url+'/path1') r2 = s.get(url+'/path2') r1.cookies r2.cookies # 会话对象设置的参数会同步到请求方法 s = requests.Session() # 通过会话对象设置请求头 s.headers.update({'x-test1': 'true'}) # 通过请求方法设置请求头 args = {'x-test2': 'true'} # 此时请求头中包含x-test1和x-test2 s.get(url, headers=args) s.headers # 请求方法设置的参数不会影响到会话对象和其他请求方法 s = requests.Session() # 不同的请求方法互不影响 r1 = s.get(url, cookies={'from-my': 'browser'}) r2 = s.get(url) # r1有cookie,r2无cookie r1.cookies r2.cookies ``` ## SSL证书验证 ```python url = 'https://leafbackaut.cn' verify_path = '/certfile' # 在请求中设置证书 r = requests.get(url, verify=verify_path) # 在会话中设置证书 s = requests.Session() s.verify = verify # 不设置证书(默认开启使用内置的证书) requests.get(url, verify=False) ``` ## 客户端证书 ```python url = 'https://leafbackaut.cn' cert_path=('/path/client.cert', '/path/client.key') # 在请求方法中设置证书 r = requests.get(url, cert=cert_path) # 在会话中设置证书 s = requests.Session() s.cert = '/path/client.cert' ``` ## 设置代理 ```python url = 'https://leafbackaut.cn' proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } r = reuqests.get(url, proxies=proxies) ```
创建时间:2023-04-16
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链