Requests库简要介绍

 Requests中文官方文档:http://cn.python-requests.org/zh_CN/latest/

其中,在ipython中利用自动补全看下调用requests之后返回的response对象的一些属性:

在ipython中利用自动补全看下调用requests之后返回的response对象的一些属性:

In [1]: import requests
In [2]: r = requests.get('https://api.github.com')
In [3]: r.
r.apparent_encoding  r.history            r.raw
r.close              r.is_redirect        r.reason
r.connection         r.iter_content       r.request
r.content            r.iter_lines         r.status_code
r.cookies            r.json               r.text
r.elapsed            r.links              r.url
r.encoding           r.ok                 
r.headers            r.raise_for_status 


r.encoding是直接从响应头部信息Content-Type里获取页面编码, 而r.apparent_encoding是利用chardet检测r.content的编码得到的值.
r.content是响应内容的字节流(bytes),而r.text是将响应内容以r.encoding解码后得到的unicode对象.
r.raw可获得原始套接字响应,但必须在发出请求时设置stream=True,之后可使用read()方法读取.
requests的get()和post()请求可以接受params={}, data={}, headers={}, cookies={}, proxies={}, auth=(),等等一系列参数.

 其他用法:

import requests  
import json  
  
#发送POST请求  
#r = requests.post("http://httpbin.org/post")  
  
#发送其他类型请求  
#r = requests.put("http://httpbin.org/put")  
#r = requests.delete("http://httpbin.org/delete")  
#r = requests.head("http://httpbin.org/get")  
#r = requests.options("http://httpbin.org/get")  
  
#传递参数的GET请求  
#payload = {'key1': 'value1', 'key2': 'value2'}  
#r = requests.get("http://httpbin.org/get", params=payload)  
#print(r.url)  
  
#查看相应内容,会自动解码  
#print(r.text)  

其他响应项:
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响应)抛出异常

#查看,指定URL编码  
#print(r.encoding)  
#r.encoding = 'ISO-8859-1'  
  
#以字节方式访问相应,会自动解码gzip和deflate压缩的数据  
#print(r.content)  
  
#创建图片  
#from PIL import Image  
#from io import StringIO  
#i= Image.open(StringIO.StringIO(r.content))  
  
#处理JSON数据  
#import requests  
#r=requests.get('https://github.com/timeline.json')  
#print(r.json())  
  
#返回原始相应内容  
##>>> r = requests.get('https://github.com/timeline.json', stream=True)  
##>>> r.raw  
##<requests.packages.urllib3.response.HTTPResponse object at 0x101194810>  
##>>> r.raw.read(10)  
##'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'  
  
#保存文本,针对返回原始内容byte  
##with open(filename, 'wb') as fd:  
##    for chunk in r.iter_content(chunk_size):  
##        fd.write(chunk)  
  
#添加头部  
##>>> import json  
##>>> url = 'https://api.github.com/some/endpoint'  
##>>> payload = {'some': 'data'}  
##>>> headers = {'content-type': 'application/json'}  
##  
##>>> r = requests.post(url, data=json.dumps(payload), headers=headers)  
  
#账号密码登陆  
#r = requests.get('https://api.github.com/user', auth=('user', 'pass'))  
  
#发送表单数据  
##paylaod={"key1":"value1","key2":"value2"}  
##r=requests.post("http://httpbin.org/post",data=paylaod)  
##print(r.text)  
  
#发送string数据  
##import json  
##payload={"key1":"value1","key2":"value2"}  
##r=requests.post("http://httpbin.org/post",data=json.dumps(payload))  
##print(r.text)  
  
#发送文件  
##url='http://httpbin.org/post'  
##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)  
##print(r.text)  
  
#检测响应码  
##r=requests.get('http://httpbin.org/get')  
##print(r.status_code)  
##print(r.status_code==requests.codes.ok)  
##bad_r = requests.get('http://httpbin.org/status/404')  
##print(bad_r.status_code)  
##bad_r.raise_for_status()  
  
#响应头  
##r=requests.get('http://httpbin.org/get')  
##print(r.headers)  
##print(r.headers['date'])  
  
#cookies  
##url='http://example.com/some/cookie/setting/url'  
##r=requests.get(url)  
##print(r.cookies['example_cookie_name'])  #报错  
  
#发送cookies  
##url = 'http://httpbin.org/cookies'  
##cookies = dict(cookies_are='working')  
##r = requests.get(url, cookies=cookies)  
##print(r.text)  
  
#重定向  
##r=requests.get('http://github.com')  
##print(r.url)  
##print(r.history)  
  
#超时处理  
##requests.get('http://github.com',timeout=1)  
  
#跨请求保存cookies  
##s = requests.Session()  
##s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')  
##r = s.get("http://httpbin.org/cookies")  
##print(r.text)  
  
#请求保存缺省数据  
##s = requests.Session()  
##s.auth = ('user', 'pass')  
##s.headers.update({'x-test': 'true'})  
### both 'x-test' and 'x-test2' are sent  
##r=s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})  
##print(r.text)  
  
#简单获取请求头部和返回头部  
##url='http://www.baidu.com/'  
##r=requests.get(url)  
#返回头部  
##print(r.headers)  
#请求头部  
##print(r.request.headers)  
  
#设置SSL证书  
#requests.get('https://kennethreitz.com', cert=('/path/server.crt', '/path/key'))  

 

转载于:https://my.oschina.net/zengjs275/blog/778480

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值