Requests从入门到精通

按主题探索文章、教程与工程实践。

16 篇内容

2017

requests如何发送get请求?

官方文档 使用requests发送请求其实非常简单。 首先导入Requests模块 下面试着去发送具体的请求,比如获取github的timeline信息 r是requests的响应(Response)对象,我们可以从r里面获取各种信息,比如获取响应的内容

1 分钟阅读

requests如何构造复杂的post请求?

默认情况下,在post方法中使用 data 关键字参数,Requests的行为会表现的像是在发送一个html表单,比如 如果需要为多个元素使用同一key的话,可以在data中传入元组,比如 如果 data 中传的是string而不是dict的话,那么字符串将会被直接发送出去 因为现在很多api接受json字符串格式的post data,Requests为这种 …

1 分钟阅读

requests如何在url中传递参数?

官方文档 我们经常需要在请求中加参数,比如一些分页信息,每页返回的资源数量等。 如果我们手工去构造这些参数的话,我们会在url后面接 ,然后传入key/value对,比如 。多个key/value对以 分隔。 在Requests里,我们一般使用 关键字参数的方式,传入dict来传递url参数。比如,假设我们想传递 和 这2个参数,我们可以用下面的代码 可以通 …

1 分钟阅读

requests如何获取响应的状态码?

使用 就可以了。 为方便引用,Requests还附带了一个内置的状态码查询对象: 如果发送了一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们可以通过 Response.raise_for_status() 来抛出异常: 如果在测试用例中直接使用 方法,如果有异常抛出的话,用例会自动失败。

1 分钟阅读

requests如何查看响应内容?

方法会拿到请求的响应内容,比如以再github的timeline接口为例 Requests会自动去解码server端返回的内容,大部分的unicode字符集都会被无缝解码。 当你发送请求的时候,Requests会根据HTTP headers来推断编码,并在 调用的时候使用。我们可以查看和修改Requests的编码,比如

1 分钟阅读

requests中如何查看响应的headers?

可以拿到Python 字典形式展示的服务器响应头: 但是这个字典比较特殊:它是仅为 HTTP 头部而生的。根据RFC 2616, HTTP 头部是大小写不敏感的。 因此,我们可以使用任意大写形式来访问这些响应头字段:

1 分钟阅读

requests如何解析json响应?

官方文档 如果服务器返回json格式的数据,那么我们一般希望可以把json字符串转成python的dict数据类型。 如果JSON解析失败,r.json()会抛异常。比如假设响应的返回状态码是204(No Content),又或者响应的返回json字符串格式有错误,那么r.json()回抛出 异常。 需要引起注意的是r.json()解析成功了并不代表请求是成 …

1 分钟阅读

requests如何查看cookies和发送cookies?

如果某个响应中包含一些 cookie,你可以快速访问它们: 要想发送你的cookies到服务器,可以使用 cookies 参数: Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但界面更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中:

1 分钟阅读

requests如何处理url的重定向?

默认情况下,除了HEAD请求, Requests 会自动处理所有重定向。 如果你使用的是GET、OPTIONS、POST、PUT、PATCH 或者 DELETE,那么你可以通过 allow_redirects 参数禁用重定向处理: 可以使用 方法来追踪重定向 如果你使用了 HEAD 方法,你也可以启用重定向:

1 分钟阅读

requests如何处理二进制的响应内容?

官方文档 有时候服务器返回的数据不是文本的,而是二进制的,这时候我们就需要处理二进制的内容。 Requests中可以使用content方法来返回二进制的响应内容,比如 如果响应是gzip压缩过的,Requests会自动解压。 下面这个例子演示了如何从服务器返回的二进制内容创建图片。

1 分钟阅读

requests中如何设置请求的超时时间?

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

1 分钟阅读