python爬虫入门教程(二):requests库的高级用法

requests库除了基本的GET和POST请求外,requests库还提供了许多高级功能,本文将介绍其中一些常用的用法。包括:

  • 会话保持(Session)
  • SSL证书验证
  • 文件上传
  • 代理设置
  • 自定义HTTP适配器
  • 超时设置

请求参数

文章最开始,先把requests库向网站发送请求时可以携带的参数给大家列举出来,并做一个解释。

  • method:HTTP请求的方法,如 GETOPTIONSHEADPOSTPUTPATCH, 或 DELETE
  • url:要发送HTTP请求的URL网址。
  • params:添加到URL的查询字符串中的参数。例如,params={'key1': 'value1', 'key2': 'value2'} 将形成像 http://example.com?key1=value1&key2=value2 这样的URL。
  • data:要发送到服务器的请求体数据。例如,data={'key1': 'value1', 'key2': 'value2'} 在POST请求中会被编码为表单数据。如果发送的是JSON数据,通常使用json参数而不是data,这个后面遇到也会说的。
  • json:JSON格式的数据将自动编码并在请求中发送。通常用于发送JSON格式的POST请求体。
  • headers:要随请求一起发送的HTTP头。例如headers={'User-Agent': 'Mozilla/5.0'}。
  • cookies:要随请求一起发送的cookies。
  • files:用于多部分编码上传的文件。字典的键是文件名,值可以是文件对象、文件路径、或包含文件名、文件对象、内容类型和自定义头信息的元组。
  • auth:用于HTTP认证(如Basic Auth)的元组,通常包含用户名和密码。
  • timeout:设置连接和读取的超时时间(秒)。如果是浮点数,它将作为连接和读取的超时时间。如果是一个元组,第一个值是连接超时时间,第二个值是读取超时时间。
  • allow_redirects:是否允许自动处理重定向。默认为True。(这个我还没有用到过。)
  • proxies:设置请求的代理。字典的键是协议(如'http''https'),值是代理服务器的URL。
  • verify:这个参数控制是否验证服务器的TLS证书。
    布尔型:如果设置为True(默认值),则在发送HTTPS请求时会验证服务器的TLS证书。如果证书无效或不存在,将引发一个SSLError
    字符串:如果提供一个字符串,它应该是一个指向CA证书捆绑包的路径,该捆绑包将被用于验证服务器的TLS证书。这在某些情况下可能很有用,比如当你需要验证自签名证书或特定机构的证书时。
  • stream:这个参数控制是否立即下载响应内容。如果为“False”,将立即下载响应内容。
  • cert:这个参数用于客户端证书,当你需要向服务器提供SSL客户端证书进行身份验证时。如果提供一个字符串,它应该是一个指向SSL客户端证书文件(通常是.pem文件)的路径。如果提供一个元组,它应该包含两个字符串,分别指向SSL客户端证书文件和私钥文件。例如,('cert.pem', 'key.pem')

requests库中源码介绍的参数如下图:

一、会话保持(Session)

使用Session对象可以在多个请求之间保持某些参数,如cookies、HTTP头等。这对于需要登录认证或保持用户状态的网站非常有用。

二、SSL证书验证

默认情况下,requests库会验证SSL证书。但在某些情况下(比如网站证书过期的时候),你可能需要忽略SSL证书验证(不推荐在生产环境中使用)。

三、文件上传

使用files参数可以轻松地上传文件。

四、代理设置

通过proxies参数可以配置代理服务器。

代码如下图:

五、超时设置

在发送请求时,设置超时是一个很重要的安全措施,可以防止程序无限期地等待响应。

代码如下:

六、自定义HTTP适配器

通过自定义HTTP适配器,你可以更改底层的行为,如连接池管理、重试策略等。这个我几乎没怎么用过,暂时先做了解吧,后面在爬虫实战中见到的话再细说。

代码如下:(代码中的操作也可以用正常的循环语句加try...except...语句实现)

我认为只看这些代码或者说是参数使用的例子是没有太大用处的,具体要会在实战中应用这些参数还是得多练习,见过之后就会熟悉具体的应用场景,后面我会发文章来带领大家进一步学习这门技术,感兴趣的可以来看一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程leetcode编程题

synchronized 实现 class ReentrantTest {private int n;private volatile int flag 1;private Object lock new Object();public ReentrantTest(int n) {this.n n;}public void zero(IntConsumer printNumber) throws InterruptedException{for(int i1;i<n;){synchron…

Socket编程权威指南(一)打通网络通信的任督二脉

在网络化的今天&#xff0c;Socket已成为构建分布式系统、实现进程间通信的利器。无论是搭建Web服务器、还是开发网络游戏&#xff0c;Socket编程技能都是必不可少的武器。本文将为你娓娓道来Socket编程的精髓&#xff0c;包括基本流程概览、常用函数剖析&#xff0c;以及精彩实…

【CS.CN】优化HTTP传输:揭示Transfer-Encoding: chunked的奥秘与应用

文章目录 0 序言0.1 由来0.2 使用场景 1 Transfer-Encoding: chunked的机制2 语法 && 通过设置Transfer-Encoding: chunked优化性能3 总结References 0 序言 0.1 由来 Transfer-Encoding头部字段在HTTP/1.1中被引入&#xff0c;用于指示数据传输过程中使用的编码方式…

Locust:用Python编写可扩展的负载测试

Locust&#xff1a;简化性能测试&#xff0c;让负载模拟更直观- 精选真开源&#xff0c;释放新价值。 概览 Locust是一个开源的性能和负载测试工具&#xff0c;专门用于HTTP和其他协议的测试。它采用开发者友好的方法&#xff0c;允许用户使用普通的Python代码来定义测试场景。…

nvm,node不是内部命令,npm版本不支持问题(曾经安装过nodejs)

nvm安装后nvm -v有效&#xff0c;node指令无效 环境变量配置无问题 推荐方案 下载你需要的node版本 Index of /dist/ (nodejs.org) 下载后解压到你的nvm存储版本的位置 cmd进入切换你的使用版本&#xff08;此时你的nodejs是从网上下载的&#xff0c;npm文件是存在的&…

Maven中的DependencyManagement和Dependencies

Maven中的DependencyManagement和Dependencies Dependencies Dependencies是Maven项目中用来声明项目依赖的部分。在pom.xml文件中的<dependencies>部分&#xff0c;你可以直接列出项目所依赖的库&#xff08;artifacts&#xff09;。每个依赖通常包括以下信息&#xf…

【PythonCode】力扣Leetcode21~25题Python版

【PythonCode】力扣Leetcode21~25题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C…

如何将HTTP升级成HTTPS?既简单又免费的方法!

在当今数字化时代&#xff0c;网络安全已成为用户和企业关注的焦点。HTTPS作为一种更加安全的网络通信协议&#xff0c;正逐渐取代传统的HTTP成为新的标准。对于许多网站管理员和内容创作者来说&#xff0c;如何免费升级到HTTPS是一个值得探讨的问题。本文将详细介绍一些免费的…

一分钟学习数据安全—自主管理身份SSI加密技术

上篇介绍了SSI的架构。架构之后&#xff0c;我们要了解一下SSI发展的驱动力&#xff1a;加密技术。现代数字通信离不开数学和计算机科学&#xff0c;加密技术也源于此。加密技术使区块链和分布式账本得以实现&#xff0c;也使SSI成为可能。 以下我们就概览一下SSI基础架构中涉及…

前端三大主流框架

目录 1.概述 2.React 2.1.作用 2.2.诞生背景 2.3.版本历史 2.4.优缺点 2.5.应用场景 2.6.示例 2.7.未来展望 3.Vue 3.1.作用 3.2.诞生背景 3.3.版本历史 3.4.优缺点 3.5.应用场景 3.7.示例 3.8.未来展望 4.Angular 4.1.作用 4.2.诞生背景 4.3.版本历史 4…

【介绍下R-tree,什么是R-tree?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【Java】解决Java报错:ArrayIndexOutOfBoundsException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 直接访问数组越界2.2 循环中的索引错误2.3 多维数组的错误访问 3. 解决方案3.1 检查数组长度3.2 正确使用循环3.3 多维数组的正确访问 4. 预防措施4.1 使用增强型 for 循环4.2 编写防御性代码4.3 单元测试 结语 引言 在Java编程…

mysql报错 Duplicate entry

在MySQL中&#xff0c;当你尝试执行插入&#xff08;INSERT&#xff09;或更新&#xff08;UPDATE&#xff09;操作时&#xff0c;如果目标表中存在唯一索引&#xff08;包括主键索引、唯一约束索引等&#xff09;&#xff0c;并且你要插入或更新的数据在该索引列上的值与表中已…

双网卡配置IP和路由总结

1.在网络适配器属性IPv4中设置默认网关&#xff08;记网关地址为A&#xff09;&#xff0c;将会在本地路由表中新增一条记录&#xff1a; 网络号子网掩码网关地址0.0.0.00.0.0.0A 2.如果有两个网卡&#xff08;假设一个连接内网&#xff0c;一个连接互联网&#xff09;&#…

20240607在Toybrick的TB-RK3588开发板的Android12下适配IMX415摄像头和ov50c40

20240607在Toybrick的TB-RK3588开发板的Android12下适配IMX415摄像头和ov50c40 2024/6/7 11:42 【4K/8K摄像头发热量巨大&#xff0c;请做好散热措施&#xff0c;最好使用散热片鼓风机模式&#xff01;】 结论&#xff1a;欢迎您入坑。 Toybrick的TB-RK3588开发板的技术支持不…

使用 TinyEngine 低代码引擎实现三方物料集成

本文由体验技术团队 TinyEngine 项目成员炽凌创作&#xff0c;欢迎大家实操体验&#xff0c;本体验内容基于 TinyEngine 低代码引擎提供的环境&#xff0c;介绍了如何通过 TinyEngine 低代码引擎实现三方物料集成&#xff0c;帮助开发者快速开发。 知识背景 1.1 TinyEngine 低…

【SkyWalking】使用PostgreSQL做存储K8s部署

拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…

SpringBoot集成ireport打印,并解决PDF中文显示问题

1、相关jar包引入 <!-- ireport报表相关 start--><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>4.5.1</version><exclusions><exclusion><groupId…

Ubuntu 22.04.4 LTS安装cmake-3.29.5

一、下载源码 wget https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5.tar.gz tar -xzvf cmake-3.29.5.tar.gz 二、编译 运行./bootstrap。 如果出现下列问题&#xff1a; -- Could NOT find OpenSSL, try to set the path to OpenSSL root folder …

go语言后端开发学习(二)——基于七牛云实现的资源上传模块

前言 在之前的文章中我介绍过我们基于gin框架怎么实现本地上传图片和文本这类的文件资源(具体文章可以参考gin框架学习笔记(二) ——相关数据与文件的响应)&#xff0c;但是在我们实际上的项目开发中一般却是不会使用本地上传资源的方式来上传的&#xff0c;因为文件的上传与读…