Python-requests网络库详解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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响应)抛出异常

正常测试 请求异常

今天先到这明天继续分解

转载于:https://my.oschina.net/roycehe/blog/1486482

你可能感兴趣的:(python,json,git)