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'))