Requests库


http://docs.python-requests.org/zh_CN/latest/index.html
requests是基于Python的访问url资源的第三方库

安装

pip install requests
获得源码: git clone git://github.com/kennethreitz/requests.git

发送请求

传递url参数

  • requests允许使用param关键字参数,以字符串字典形式
    payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
    r = requests.get(‘http://httpbin.org/get’, params=payload)
    print(r.url)
  • 还可以将一个列表作为值输入
    payload = {‘key1’: ‘value1’, ‘key2’: [‘value2’, ‘value3’]}
    r = requests.get(‘http://httpbin.org/get’,params=payload)
    print(r.url)
  • 注意
    字典里值为None的键都不会被添加到URL的查询字符串里
    可以使用r.url输出完整url

响应内容

  • 使用r.text可以输出服务器响应内容
    r = requests.get(‘https://api.github.com/events’)
    r.text
  • requests会自动解码来自服务器的内容,大多数Unicode字符集都能被解码
  • 请求发出后,requests会基于http头部对响应的编码作出有根据的推测,当访问r.text后,requests会使用其推测的文本编码
    r.encoding可以查看当前编码,并且可以改变编码
    r.encoding #返回当前编码
    r.encoding = ‘ISO-8859-1’ #定义新编码

二进制响应内容

  • 以字节的方式访问请求响应体
    r.content
  • requests会自动解码gzip和deflate传输编码的响应数据
  • 请求返回的二进制数据创建一张图片
    from PIL import Image
    from io import BytesIO
    i = Image.open(BytesIO(r.content))

json响应内容

  • requests也有一个内置的json解码器
    r.json()
  • 如果json解码失败,r.json就会抛出一个异常
  • 成功调用r.json()并不意味着响应的成功,有的服务器会在失败的响应中包含一个json对象,这种json会被解码返回,要检查请求是否成功使用r.raise_for_status()或者r.status_code是否和期望相同

原始响应内容

  • 获取来自服务器的原始套接字响应
    r.raw
  • 需要保证在初始请求中设置了stream=True
    r = requests.get(‘https://api.github.com/events’, stream=True)
    r.raw
  • 将文本流保存到文件的模式
with open(filename, 'wb') as fd:
	for chunk in r.iter_content(chunk_size):
		fd.write(chunk) 

chunk_size可以自由调整为可能更适合您的用例的数字

  • 使用 Response.iter_content 将会处理大量你直接使用 Response.raw 不得不处理的。 当流下载时,上面是优先推荐的获取内容方式

定制请求头

  • 为请求添加http头部,需要简单地传递一个dict给headers参数
    url = ‘https://api.github.com/some/endpoint
    headers = {‘user-agent’: ‘my-app/0.0.1’}
    r = requests.get(url, headers=headers)
  • requests不会基于定制header的具体情况改变自己的行为,只不过在最后的请求中,所有的header信息会被传递进去
  • 注意
    定制header的优先级低于某些特定的信息源
    所有的header值必须是string、bytestring或者Unicode,尽管传递unicode header也是允许的,但是不建议这样做

更加复杂的post请求

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值