python3之requests

1、requsest的请求

所有请求的功能可通过这7种方法访问,他们都返回response对象的一个实例。
(1)requests.request(method,url,**kwargs):构造并发送一个request,返回一个response对象
参数:

  • method:  request对象的方法(POST)
  • url:  request对象的URL
  • params:可选的,要在查询字符串中发送的字典或字节request
  • data:可选的,字典或元祖列表以表单编码,字节或类似文件的对象在主体中发送[(key,value)]
  • json:可选的,一个json可序列化的python对象,在主体中发送request
  • headers:可选的,用于编写http头信息
  • cookies:可选,用dict或cookieJar对象发送Cookies
  • file:可选,用于多部分编码上传的字典,可以是多元祖,其中是定义给定文件的内容类型的字符串,以及包含问文件添加的额外头文件的类字典对象
  • auth:可选,身份验证元祖,自定义http身份验证
  • timeout:可选,发送等待请求数据的超时时间(float/tuple),设置为元祖即为练级connect和read读取超时,如果设置为None即为永久等待
  • allow_redirects:布尔值,可选,启用或禁用GET,OPTIONS,POST,PUT,PATCH,DELETE,HEAD重定向,默认为true
  • proxies:可选,字典映射协议到代理的URL
  • verify:可选,可以是布尔值,可以指定验证服务器的TLS证书路径,默认为true
  • stream:可选,如果是False,响应内容将立即下载
  • cert:可选,如果是string,则为ssl客户端证书文件路径,如果是元祖则('cert','key')指定证书和密钥
import requests
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
}
response=request('GET','https://api.github.com/events',headers=header) #定义头信息发送请求返回response对象
print(response.url) #返回请求的URL
print(response.status_code)  #返回状态码200
print(response.encoding)  #返回编码
print(response.text)  #返回响应的内容以unicode表示
print(response.headers) #返回头信息
print(response.cookies) #返回cookies CookieJar
print(response.json()) #返回json数据

(2)requests.head(url,**kwargs):发送head请求,url:网站URL地址,返回一个response对象

from requests import head
header=head('https://github.com/get')
print('text:',header.text) #不会返回内容信息
print('headers:',header.headers) #返回头信息
print(header.cookies.items()) #返回cookies元组列表

(3)requests.get(url,params=None,**kwargs):发送GET请求,params:要在查询字符串中发送的字典或字节request,返回一个response对象

from requests import get
response=get('http://httpbin.org/get',params={'name':'py.qi','age':22})#添加参数查询
print(response.text) #返回结果包含args参数,headers头信息,URL和IP信息
print(response.url) #返回组合的URL(http://httpbin.org/get?name=py.qi&age=22)
print(response.json()) #如果返回网页是JSON格式,可以使用json()方法解析返回字典数据

(4)requests.post(url,data=None,json=None,**kwargs):发送POST请求,data:字典数据也可以是元组列表,将被表单编码,以字节或文件对象在数据主体中发送
json:在json数据中发送正文,返回一个response对象

import requests
data={'k1':'v1','k2':'v2'}
r = requests.post('http://httpbin.org/post',data=data) #以表单数据发送数据
body=r.json()  #获得字典格式的返回数据 
print(body['form'])  #窃取表单编码数据

上传文件:files参数指定上传文件,上传的文件在主体数据中

import requests
url='http://httpbin.org/post'
files={'file':open('network.csv','rb')}
files1={'file':('filename.xls',open('fileanme.xls','rb'),'application/vnd.ms-excel',{'expires':'0'})} #设置文件名
r=requests.post(url,files=files) #指定文件发送请求
print(r.json()['files'])

多文件上传

import requests
url='http://httpbin.org/post'
multple_files=[
    ('images1',('11.jpg',open('11.jpg','rb'),'image/jpg')),
    ('images2',('22.jpg',open('22.jpg','rb'),'image/jpg')),
]  #字段代表意思依次为:文件名,文件对象,文件类型
r=requests.post(url,files=multple_files)
print(r.text)

(5)requests.put(url,data=None,**kwargs):发送PUT请求参数同POST一样,将返回一个response对象

(6)requests.patch(url,data=None,**kwargs):发送PATCH请求
(7)requests.delete(url,**kwargs):发送DELETE请求

2、异常处理

exception requests.RequestException(*args, **kwargs):发送一个模糊的异常
exception requests.ConnectionError(*args, **kwargs):发生连接错误时的异常
exception requests.HTTPError(*args, **kwargs):发生HTTP错误时的异常
exception requests.URLRequired(*args, **kwargs):URL错误时的异常
exception requests.TooManyRedirects(*args, **kwargs):太多的重定向
exception requests.ConnectTimeout(*args, **kwargs):连接服务器是请求超时
exception requests.ReadTimeout(*args, **kwargs):服务器没有在指定的时间内发送数据
exception requests.Timeout(*args, **kwargs):请求超时

3、请求响应

class response.Response :该Response对象包含服务器对HTTP请求的响应信息

该对象包含的属性和方法:

    apparent_encodind:由chardet库提供的明显编码。
    close():将连接释放回池中,即关闭连接,通常不需要调用
    content:响应的内容,以字节为单位。
    cookies=None :服务器发回的Cookies CookieJar。
    elapsed=None :发送请求和响应到达之间所经过的时间量(作为timedelta)。该属性具体测量发送请求的第一个字节和完成解析报头之间的时间。因此,它不受消费响应内容或stream关键字参数值的影响。
    encoding=None :编码以在访问r.text时进行解码。
    headers=None :不区分大小写的响应头字典。例如,headers['content-encoding']将返回'Content-Encoding'响应头的值。
    history=None :Response请求历史记录中的对象列表。任何重定向响应都会在这里结束。该列表从最旧的到最近的请求进行排序。
    is_permanent_redirect:如果此响应为真,则为重定向的永久版本之一。
    is_redirect:如果此响应是可以自动处理的格式良好的HTTP重定向,则为真。
    iter_content(chunk_size = 1,decode_unicode = False ):迭代响应数据。在请求中设置stream = True时,可以避免将内容一次性读入内存以获得较大的响应。块大小是它应该读入内存的字节数;chunk_size必须是int或None类型。stream = True将在数据以任何大小接收到的数据到达时读取数据。如果stream = False,则数据作为单个块返回;如果decode_unicode为True,则内容将使用基于响应的最佳可用编码进行解码。
    iter_lines(chunk_size = 512,decode_unicode = None,delimiter = None ):迭代响应数据,一次一行。在请求中设置stream = True时,可以避免将内容一次性读入内存以获得较大的响应。
    json(** kwargs ):返回响应的json编码内容
    links:返回解析的响应头部链接
    next:返回重定向链中下一个请求的PreparedRequest
    ok:如果status_code小于400 则返回True,否则返回False
    reason=None:响应HTTP状态的文本原因,例如“未找到”或“确定”。
    request=None:一个响应的对象。
    status_code=None:整数响应HTTP状态的代码,例如404或200。
    text:响应的内容,以unicode表示。 
    url=None:响应的最终URL位置
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'}
r=requests.get('http://docs.python-requests.org/en/master/',headers=headers)
print('chardet提供的编码:',r.apparent_encoding)
print('响应字节内容:',r.content)
print('响应cookies:',r.cookies.items())
print('请求到响应之间的时间:',r.elapsed)
print('响应编码:',r.encoding)
print('响应头信息:',r.headers)
print('头信息中的server:',r.headers['Server'])
print('请求历史记录:',r.history)
print('迭代响应数据:',r.iter_lines())
#print('响应json编码数据:',r.json())
print('返回解析的响应头链接:',r.links)
print('返回状态码:',r.status_code)
print('响应str内容:',r.text)
print('响应URL:',r.url)
print('返回发送的头参数:',r.request.headers)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值