您的位置:首页 > 汽车 > 时评 > python爬虫入门教程(二):requests库的高级用法

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

2025/1/9 3:13:23 来源:https://blog.csdn.net/qq_64192931/article/details/139478094  浏览:    关键词: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...语句实现)

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com