layout: default title:Python-requests网络库详解 date: 2017-07-24 16:34:00 tags:
Python-requests网络库详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求.Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner.
###requests安装 通过pip安装
pip install requests
源码安装
$ git clone git://github.com/kennethreitz/requests.git
$ cd requests
$ python setup.py install
简单get请求
import requests
import json
r = requests.get('http://www.baidu.com')
print r.status_code # 状态码
print r.text # text格式
con = r.content #内容这里返回的是html标签
POST请求
# 把参数名和值已键值对的方式 放到字典里面
payload = dict(key1='value1', key2='value2')
r = requests.post('http://httpbin.org/post', data=payload)
#也可以以json格式上传
r = requests.post('https:www.baidu.com, data=json.dumps({'some': 'data'}))
print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}
更多的请求方法参考
requests.api
自定义header
data = {'some': 'data'}
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:www.baidu.com', data=data, headers=headers)
response响应 requests提供了一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text、r.status_code……可以通过 r.text ,r.content,r.json等方法获取到对应的格式
- r.status_code #响应状态码
- r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取
- r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
- r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
- r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
- #特殊方法#
- r.json() #Requests中内置的JSON解码器
- r.raise_for_status() #失败请求(非200响应)抛出异常
正常测试 请求异常
今天先到这明天继续分解