request库使用

一、介绍

        Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。

        安装:python -m pip install requests

二、设置请求

1、请求方式

import   requests
r = requests.get("url")  
r = requests.post('url', data = {'key':'value'})
r = requests.put('url', data = {'key':'value'})
r = requests.delete('url')
r = requests.head('url')
r = requests.options('url')

2、会话请求

1)session请求
s = requests.Session()
r = s.get('url')

with requests.Session() as s:
    s.get('url')

2)设置session请求,可以永久使用
s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})

添加字典到对应cookies
requests.utils.add_dict_to_cookiejar(s.cookies, {'key': 'value'})

获取cookies的字典数据
requests.utils.dict_from_cookiejar(s.cookies)

3、准备请求

from requests import Request, Session
s = Session()
req = Request('GET',  url, data=data, headers=headers)
prepped = s.prepare_request(req)
prepped.body = 'Seriously, send exactly these bytes.'
prepped.headers['Keep-Dead'] = 'parrot'

resp = s.send(prepped,
    stream=stream,
    verify=verify,
    proxies=proxies,
    cert=cert,
    timeout=timeout
)

print(resp.status_code)

4、设置GET请求参数

1)放在url的?后面
url = "https://httpbin.org/get?key=val"
r = request.get(url)

2)放在params
payload = {'key1': 'value1', 'key2': 'value2'}
payload = {'key1': 'value1', 'key2': ['value2', 'value3']} 值可以是list
r = requests.get(url, params=payload)

5、设置POST请求参数

1)发送data参数

传递字典给data
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("url", data=payload)

传递元祖列表给data,多个元素使用同一key
payload = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post("url", data=payload)

传递字符串给data
import json
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))  //dumps将python数据类型转为字符串

2)发送json参数(2.4.2 版的新加功能)
payload = {'some': 'data'}
r = requests.post(url, json=payload)

3)发送file参数
files = {'file': open('report.xls', 'rb')}
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
r = requests.post(url, files=files)

6、设置请求头(Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去)

headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)

7、设置cookies

cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)

8、设置请求延时

requests.get('url', timeout=0.001) //请求响应时间>timeout,报错

 

三、获取请求数据

1、获取请求头

 r.request.headers

四、获取响应数据

1、获取响应编码

1)获取请求响应编码
   r.encoding

2)设置请求响应编码
   r.encoding = 'ISO-8859-1' 
   r.encoding = 'utf-8'

2、获取响应内容

1)获取文本响应内容,可以通过r.encoding设置文本编码方式,正常解析出文本内容
r.text

2)获取二进制数据
r.content

根据返回的二进制数据,创建图片
from PIL import Image
from io import BytesIO
i = Image.open(BytesIO(r.content))

3)获取json数据
r.json()

4)获取服务器原始套接字,urllib 的 response 对象
r = requests.get('url', stream=True)
r.raw.read()

5)边下载边存到硬盘
with open(filename, 'wb') as fd:
    for chunk in r.iter_content(chunk_size=1028):
        fd.write(chunk)

3、获取响应状态码

r.status_code

4、获取响应头

r.headers
r.headers['Content-Type']
r.headers.get('content-type')

5、获取cookie

r.cookies
r.cookies['example_cookie_name']

6、重定向

r = requests.get('url', allow_redirects=False) //重定向开关关闭,默认是打开
r.history   //获取所有重定向的请求响应
r.history[0].headers  //获取第一个重定向的响应头

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值