Python_Requests

使用Requests发送网络请求

1、导入Requests模块:import requests

2  获取网页:r = requests.get('https://api.github.com/events')

3、给服务器添加信息:r= requests.post('http://httpbin.org/post',data = {'key':'value'})

4、在指明的URL出存储一个文档   r= requests.put(‘http://httpbin.org/put’, data= {‘key’:’value’})

5、删除指明的URL所标志的资源   r = requests.delete('http://httpbin.org/delete')

传递URL参数

Requests允许使用 params 关键字参数,以一个字符串字典来提供这些参数。例如:

                  

    字典嵌套列表传入:

                   

    Notice字典里值为none的键都不会被添加到URL的查询字符串里。

响应内容:

                 

       请求发出后,Requests会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests会使用其推测的文本编码。你可以找出Requests 使用了什么编码,并且能够使用r.encoding 属性来改变它:

二进制响应内容:

      以字节的方式访问请求响应体,对于非文本请求:Requests会自动为你解码 gzip 和 deflate 传输编码的响应数据。

                

JSON 响应内容:

 来处理JSON数据

原始响应内容:

                

获取来自服务器的原始套接字响应。可以访问 r.raw。如果你确实想这么干,那请你确保在初始请求中设置了 stream=True。但一般情况下,你应该以下面的模式将文本流保存到文件

                

定制请求头:

      如果你想为请求添加HTTP 头部,只要简单地传递一个dict给headers参数就可以了。

                    

更加复杂的POST请求

      通常,你想要发送一些编码为表单形式的数据——非常像一个HTML 表单。要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式:

                    

      你还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一key 的时候,这种方式尤其有效:

                    

POST一个多部分编码(Multipart-Encoded)的文件

                   

                

响应状态码

      我们可以检测响应状态码:

                     

      如果发送了一个错误请求,我们可以通过Response.raise_for_status() 来抛出异常:

                   

响应头:

      我们可以查看以一个Python 字典形式展示的服务器响应头

                    

                    

重定向与请求历史

      默认情况下,除了head·,requests会自动处理所有重定向。可以使用相应对象的history方法追踪重定向。Response.history是一个 Response 对象的列表,为了完成请求而创建了这些对象。这个对象列表按照从最老到最近的请求进行排序。

                

超时:

      你可以告诉requests 在经过以timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用,你的程序可能会永远失去响应

                

Noticetimeout 仅对连接过程有效,与响应体的下载关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在timeout 秒内没有从基础套接字上接收到任何字节的数据时)

错误与异常:

      遇到网络问题(如:DNS查询失败、拒绝连接等)时,Requests 会抛出一个ConnectionError 异常。

      如果HTTP 请求返回了不成功的状态码,Response.raise_for_status()会抛出一个 HTTPError 异常。

      若请求超时,则抛出一个Timeout 异常。

      若请求超过了设定的最大重定向次数,则会抛TooManyRedirects异常。

      所有Requests显式抛出的异常都继承自requests.exceptions.RequestException 。



猜你喜欢

转载自blog.csdn.net/yigui3542/article/details/80469340