IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python爬虫学习25 -> 正文阅读

[网络协议]python爬虫学习25

python爬虫学习25

四、httpx库

接着昨天的进度继续:

上半部分的传送门

4-4 client 对象

httpx中有一个client对象,对于他的使用我们可以类比requests库中的session:

# client 对象
import httpx

with httpx.Client() as cli:
    resp = cli.get('https://www.httpbin.org/get')
    print(resp)

运行结果:

在这里插入图片描述

对于client 官方推荐的用法就是 with…as语句,但是我们也可以等价为下面:

# 等价为 ↓↓↓↓↓
import httpx

client = httpx.Client()
try:
    resp = client.get('https://www.httpbin.org/get')
    print(resp)
finally:
    client.close()

运行结果:

在这里插入图片描述

同时,在设置client对象时,还可以指定一些参数:

import httpx

url = 'http://www.httpbin.org/get'
headers = {'User-Agent': 'this is a user-agent'}
with httpx.Client(headers=headers) as client:
    resp = client.get(url)
    print(resp.json()['headers']['User-Agent'])

从网站返回的响应中,我们提取了设置的User-Agent字段,说明我们成功地赋值了headers属性:

在这里插入图片描述

4-5 支持HTTP/2.0

对于httpx对http/2.0的支持,我们在4-3中已经涉及过了:

import httpx

# 如果不设置http2字段 httpx库默认不会支持http2.0
client = httpx.Client(http2=True)
url1 = 'http://www.httpbin.org/get'
url2 = 'https://spa16.scrape.center/'
resp1 = client.get(url2)
print('resp1:', resp1.http_version)
resp2 = client.get(url1)
print('resp2:', resp2.http_version)
resp3 = httpx.get(url1)
print('resp3:', resp3.http_version)

运行结果:

在这里插入图片描述

对比以上三组结果,我们也可以得到一个结论:在设置HTTP2.0以后,只有服务器端客户端要求使用HTTP2.0时,它才会使用HTTP2.0进行传输,否则一般情况下(网页使用HTTP1.1就可以得到相应)即使已经设置对2.0的支持,它依然会使用HTTP1.1进行传输。

4-6 支持异步请求

httpx还支持异步客户端请求,支持python的async请求模式:

# 支持异步请求:

import httpx
import asyncio

async def fetch(url):
    async with httpx.AsyncClient(http2=True) as cli:
        resp = await cli.get(url)
        print(resp.text)
if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(fetch('http://www.httpbin.org/get'))

运行结果:

在这里插入图片描述

啥叫异步请求?不知道,学到那里的时候或许就知道了吧

至此对于httpx学习完毕,未完待续

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:47:24  更:2022-04-04 12:50:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:44:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码