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 方式的响应结果。

请接着看下一博客笔记

目录
相关文章
|
3月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
138 13
|
16天前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
138 65
|
1月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
50 10
|
1月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
91 9
|
2月前
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
105 26
|
3月前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
180 30
|
2月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
227 20
|
2月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
72 18
|
2月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
71 19
|
2月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
82 1

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问