接口测试 - requests模块使用(Python3 网络爬虫开发实战)
1|0一、基本用法
1|11.1 实例引入
运行结果
1|21.2 GET 请求
1.2.1 抓取网页
1.2.2 抓取二进制数据
同样的,音频和视频也可以用这种方式获取。
1|31.3 POST 请求
运行结果
1|41.4 响应
这里通过比较返回码和内置的成功的返回码,来保证请求得到了正常响应,输出成功请求的消息,否则程序终止,这里我们用 request.codes.ok 来代码200 状态码。not_found 表示404。状态码和查询条件如下:
http://tools.jb51.net/table/http_status_code
2|0二、高级用法
2|12.1 文件上传
注意点:``Content-Type: multipart/form-data; boundary=${bound}
这个 headers不要传入
files里面的name得填写这个
运行结果
2|22.2 Cookies
2|32.3 会话维持
运行结果
set/number/123456789
实际上设置了一个cookie,但是第二次get的时候没有取到。
换上 Session 试试看:
运行结果
利用 Session,可以做到模拟同一个会话而不用担心 Cookies 的问题。它通常用于模拟登录成功之后再进行下一步的操作。
2|42.4 SSL 证书验证
如果直接禁用,会有警告,它建议我们给它指定证书。我们可以设置忽略警告来屏蔽
或者通过捕获警告到日志的方式忽略警告
当然,我们也可以制定一个本地证书用作客户端证书,这可以是单个文件(包含秘钥和证书)或一个包含两个文件路径的元组:
2|52.5 代理设置
如果大规模爬取,对于频繁的请求,网站直接回封禁客户端IP。这时候就需要代理
若代理需要使用 HTTP Basic Auth ,可以使用类似 http://user:password@host:port
这样的语法来设置代理
除了基本的 HTTP 代理外,requests 还支持 SOCKS 协议的代理。
首先要安装 socks 这个库:
然后就可以使用 SOCKS 协议代理了,示例如下:
2|62.6 超时设置
用于设定超时时间, 单位为秒,当发起一个get请求时可以设置一个timeout时间, 如果在timeout时间内请求内容没有返回, 将产生一个timeout的异常。
实际上,请求分为两个阶段,即连接(connect)
和 读取(read)
。单独设置的话,为两者的 timeout 总和
。如果要分别指定,就可以传入一个元祖:
如果想永久等待,可以直接将timeout设置为None,或者不设置直接留空,因为默认是None。
2|72.7 身份认证
成功会返回200状态码,失败会返回401状态码
有一个简便写法
此外,requests 还提供了其他认证方式,如OAuth认证,不过此时需要安装oauth包,安装命令如下:
使用 OAuth1认证的方法如下:
2|82.8 Prepared Request
可以将请求表示为数据结构,其中各个参数都可以通过一个Request对象来表示。
这里我们引入了 Request,然后用url,data和headers参数够早了一个 Request对象,这时需要再调用 Session 的prepare_request() 方法将其转换为一个 Prepared Request对象,然后调用 send() 方法发送即可。
有了Request这个对象,就可以将请求当做独立的对象来看待,这样在进行队列调度时会非常方便。后面我们会用它来构造一个 Request队列。
__EOF__

本文链接:https://www.cnblogs.com/dongye95/p/14327864.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!