9.每天进步一点点---Python-Requests HTTP 请求库

简介: 9.每天进步一点点---Python-Requests HTTP 请求库

Python 自带的 urllib 网络请求库基本可满足我们的需要,但是在实际开发过程中使用 起来还是有些烦琐,表现在以下几个方面

  • 发送 GET 和 POST 请求。
  • Cookie 处理。
  • 设置代理。

urllib 默认不支持压缩,要返回压缩格式,必须在请求头里写明 accept- encoding,然后在获取返回数据时,它以响应头里是否有 accept-encoding 来判断是否需要解码。当然也可 以对 urllib 进行一些常用的封装,以规避此类问题。而更多时候,我们会选择使用 Requests 库来模拟请求。

1.Requests 库介绍

Requests 库基于 urllib 库,是采用 Apache2 Licensed 开源协议的 HTTP 库,更加简单且 功能强大。该库支持如下功能。

  • International Domains and URLs:国际化域名和 URL。
  • Keep-Alive & Connection Pooling:Keep-Alive & 连接池。
  • Sessions with Cookie Persistence:带持久 Cookie 的会话。
  • Browser-style SSL Verification:浏览器式的 SSL 认证。
  • Basic/Digest Authentication:基本/摘要式的身份认证。
  • Elegant Key/Value Cookies:简洁的 Key/Value Cookie。
  • Automatic Decompression:自动解压。
  • Automatic Content Decoding:自动内容解码。
  • Unicode Response Bodies:Unicode 响应体。
  • Multipart File Uploads:文件分块上传。
  • HTTP(S) Proxy Support:HTTP(S)代理支持。
  • Connection Timeouts:连接超时。
  • Streaming Downloads:流下载。
  • .netrc Support:支持.netrc。
  • Chunked Requests:Chunked 请求。

其官方仓库为

[官方文档为](http://www.python-requests. org/en/master/)

直接通过 pip 安装库即可

pip install requests
  1. window电脑点击win键+R,输入:cmd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a5CBbZGu-1670765565287)(9.每天进步一点点—Python-Requests HTTP 请求库.assets/image-20221124184205449.png)]

2.安装requests,pip 命令安装 ,我们使用豆瓣的镜像源来安装

pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEdc34Qh-1670765565289)(Python爬虫image/image-20221211211133611.png)]

2.Requests HTTP 基本请求

Requests 支持各种请求方式:GET、POST、PUT、DELETE、HEAD、OPTION。使用 代码示例如下

r1 = requests.get("http://xxx", params={"x": 1, "y": 2})
r2 = requests.post("http://xxx", data={"x": 1, "y": 2})
r3 = requests.put("http://xxx")
r4 = requests.delete("http://xxx")
r5 = requests.head("http://xxx")
r6 = requests.options("http://xxx")

注意事项:

  • URL 链接里有中文时会自动转码
  • 使用 post 时,如果传递的是一个 str 而不是一个 dict,则会直接发送出去(如 JSON 字符串)
  • 使用 post 时,如果传递的是一个 str 而不是一个 dict,则会直接发送出去(如 JSON 字符串).
  • post 可以通过 file 参数上传文件,如 post(url, files={‘file’: open(‘report.xls’, ‘rb’)})

3.Requests 请求常用设置

Requests 请求的相关设置如下:

设置请求头:headers={'xxx':'yyy'}
代理:proxies={'https':'xxx'}
超时(单位秒):timeout=15

4.Requests 处理返回结果

Requests 请求会返回一个 requests.models.Response 对象,可以通过调用表中的字段获取响应信息。

字段 描述
status_code 获取状态码
reason 状态信息
url 获取请求的 URL
content 获取 byte 类型的返回结果,相当于 urllib.urlopen().read
raw 获得原始的返回结果,请求里需要设置 stream=True
text 获取 str 类型的返回结果,会自动根据响应头部的字符编码进行解码;
可以调用 r.encoding 获得编码方式,或者在调用 text 之前先用
r.encoding='编码’来设置编码类型,text 就会按照对应的编码进行解析
json 解析序列化为 JSON 格式的数据,可以直接通过[‘xxx’]获取数据。
如果解析错误,则会抛出异常:ValueError: No JSON object could be decoded

除此之外,还可以使用 headers 获得响应头,代码示例如

r = requests.get('http://gank.io/api/data/Android/50/1')
# 直接根据键获得值
print(r.headers.get('Date'))
# 遍历获得请求头里所有键值
for key, value in r.headers.items():
 print(key + " : " + value)

如 果 想 获 取 请 求 头 信 息 , 可 以 调 用r.request.headers。 除 此 之 外 , 还 可 调 用 raise_for_status(),当响应码不是 200 时,会抛出 HTTPError 异常,可用于响应码校验。另 外,由 Requests 发起的请求,当相应内容经过 gzip deflate 压缩时,Requests 会自动解包, 可以通过 content 获得 byte 方式的响应结果。

请接着看下一博客笔记

相关文章
|
4天前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
44 20
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
170 77
|
14天前
|
缓存 应用服务中间件 Apache
HTTP 范围Range请求
HTTP范围请求是一种强大的技术,允许客户端请求资源的部分内容,提高了传输效率和用户体验。通过正确配置服务器和实现范围请求,可以在视频流、断点续传下载等场景中发挥重要作用。希望本文提供的详细介绍和示例代码能帮助您更好地理解和应用这一技术。
57 19
|
22天前
|
JSON JavaScript 前端开发
什么是HTTP POST请求?初学者指南与示范
HTTP POST请求是一种常用的HTTP方法,主要用于向服务器发送数据。通过合理设置请求头和请求主体,可以实现数据的可靠传输。无论是在客户端使用JavaScript,还是在服务器端使用Node.js,理解和掌握POST请求的工作原理和应用场景,对于Web开发至关重要。
201 18
|
28天前
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
83 15
|
22天前
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
62 2
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
52 11
|
20天前
|
JSON 前端开发 JavaScript
Python中如何判断是否为AJAX请求
AJAX请求是Web开发中常见的异步数据交互方式,允许不重新加载页面即与服务器通信。在Python的Django和Flask框架中,判断AJAX请求可通过检查请求头中的`X-Requested-With`字段实现。Django提供`request.is_ajax()`方法,Flask则需手动检查该头部。本文详解这两种框架的实现方法,并附带代码示例,涵盖安全性、兼容性、调试及前端配合等内容,帮助开发者提升Web应用性能与用户体验。
36 0
|
4月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
23天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
86 1