本文实例讲述了Python requests库用法。分享给大家供大家参考,具体如下:
requests是Python中一个第三方库,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。接下来将记录一下requests的使用:
安装
要使用requests
库必须先要安装:
pip install requests
创建请求
通过requests
库发出一个请求非常简单,首先我们先导入requests
库:
import requests
现在我们尝试创建一个请求,用来获取百度的网页信息:
result = requests.get('http://www.baidu.com/')
现在我们获取到了一个Response对象result,我们可以从这个对象中获得所有我们需要的所有信息。刚刚的栗子是使用的GET请求,接下来将使用requests库进行POST请求:
result = requests.post('http://www.baidu.com/',data={key:value})
很简单对吧?那么其他HTTP请求呢:PUT、DELETE、HEAD和OPTIONS呢?
result = requests.put('http://www.baidu.com/',data={key,value})result = requests.head('http://www.baidu.com/')result = requests.delete('http://www.baidu.com/')result = requests.options('http://www.baidu.com/')
在URL中传递参数
你经常想要在URL的查询字符串中发送某种数据。如果你手动构建网址,那么这个数据会在问号后作为网址中的键值对,例如https://www.baidu.com/s?wd=requests。请求允许你使用params关键字参数将这些参数作为字符串字典提供。举个栗子,你想传递name=zhangsan并且age=18到https://www.baidu.com/s,你可以这样写:
data = {"name":"zhangsan","age":18}result = requests.get("https://www.baidu.com/s",params=data)
此时我们打印一下URL,发现该URL已经被正确编码:
print result.url # https://www.baidu.com/s?name=zhangsan&age=18
也可以传递一个列表进去:
data = {"name":"zhangsan","favorite":["football","basketball"]}result = requests.get("https://www.baidu.com/s",params=data)print result.url # https://www.baidu.com/s?name=zhangsan&favorite=football&favorite=basketball
响应内容
在上面的例子可以知道,我们每次请求之后都会返回一个对象,我们可以从此对象中获取响应内容:
result = requests.get("https://api.github.com/events")print result.text # [{"id":"6924608641","type":"PushEvent",...}]
二进制响应内容
print result.content # b'[{"id":"6924656608","type":"CreateEvent",...}]'
JSON格式的响应内容,如果解码失败,result.json()将会引发异常
新闻热点
疑难解答