博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Requests库简要介绍
阅读量:6368 次
发布时间:2019-06-23

本文共 4724 字,大约阅读时间需要 15 分钟。

hot3.png

 Requests中文官方文档:

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

在ipython中利用自动补全看下调用requests之后返回的response对象的一些属性:In [1]: import requestsIn [2]: r = requests.get('https://api.github.com')In [3]: r.r.apparent_encoding  r.history            r.rawr.close              r.is_redirect        r.reasonr.connection         r.iter_content       r.requestr.content            r.iter_lines         r.status_coder.cookies            r.json               r.textr.elapsed            r.links              r.urlr.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  ##
##>>> 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

你可能感兴趣的文章
深入实践Spring Boot2.4.1 Neo4j依赖配置
查看>>
Zen Cart 如何添加地址栏上的小图标
查看>>
SecureCrt 连接Redhat linux
查看>>
[NHibernate]持久化类(Persistent Classes)
查看>>
如何在Hive中使用Json格式数据
查看>>
linux如何恢复被删除的热文件
查看>>
Eclipse(MyEclipse) 自动补全
查看>>
Struts2中dispatcher与redirect的区别
查看>>
zabbix agentd configure
查看>>
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>
IronPython教程
查看>>
squid via检测转发循环
查看>>
计算分页
查看>>
iptables 做nat路由器脚本
查看>>
数据结构(C语言版)第三章:栈和队列
查看>>