httpx与2.0协议
📋前言
有些网址强制使用http/2.0协议,但是urllib和requests库只支持http/1.1协议,这时可以使用支持http/2.0协议的
httpx库
。
📋操作
打开开发者工具,
Protocol
是
h2
的话,表示请求所用的协议是
http/2.0
。
httpx官网:https://www.python-httpx.org/quickstart/
需要注意的是,客户端使用httpx
库启用对http/2.0
的支持,并不意味着请求和响应都将通过http/2.0
传输,需要客户端和服务端都是http/2.0
,如果客户端连接到的是仅仅支持http/1.1
的服务器,那么客户端也得改用http/1.1
。
httpx
每次发送请求都需要建立一个新的连接,然而随着请求的数量增加,整个程序的请求效率就会变得很低。 httpx
提供了Client
来解决以上问题,Client
是基于HTTP
连接池实现的,这意味着当你对一个网站发送多次请求的时候, Client
会保持原有的TCP
连接,从而提升程序的执行效率 。
import httpx
url = "https://spa16.scrape.center/"
# 方法一
client = httpx.Client(http2=True) # httpx默认使用http/1.1,需要手动声明一下使用http/2.0
response = client.get(url)
print(response.status_code)
print(response.text)
# 方法二:
with httpx.Client(http2=True, headers=headers) as client:
response = client.get(url)
print(response.text)