asxe
asxe

# 开始

在大家写爬虫的时候,想必用得最多的库就是 requests 了,在长久的使用过程中,大家便会发现,若是 HTTP1.1 的链接,那么 requests 是完全没啥问题的,但如若为 HTTP2.0,那么就不行了,因为 requests 并未支持 HTTP2.0,因此本文介绍一个支持 HTTP2.0 的库 --httpx

# 正文

# 安装 httpx

安装
pip3 install "httpx[http2]"

# 基本使用

httpx 的 api 与 requests 相似,例如

import httpx
url='https://www.baidu.com'
res=httpx.get(url)
print(res.status_code)
print(res.text)

有点感觉没?
相同的,也可以带上一些对象

import httpx
header={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54'
}
url='https://www.baidu.com'
res=httpx.get(url,headers=header)
print(res.status_code)
print(res.text)

这里即是带上了一个 headers 对象
但是这并不是本文的重点!我们接着说
链接:https://spa16.scrape.center
这个链接是 HTTP2.0
我们使用 httpx 请求一下

测试
import httpx
header={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54'
}
url='https://spa16.scrape.center'
res=httpx.get(url,headers=header)
print(res.text)

可以发现,程序报错了!
1.png
这是怎么回事?不是说好了支持 HTTP2.0 吗?什么情况?
别急,那是因为 httpx 默认是开启的 http1.1 的,需要我们声明一下才行,如下

import httpx
header={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54'
}
url='https://spa16.scrape.center'
client=httpx.Client(http2=True)
res=client.get(url,headers=header)
print(res.text)
print(res.http_version)

此处我们声明一个 Client 对象,并将 http2 设置为 true,那么便开启了 HTTP2.0 的支持
2.png
可以看到,打印出来的 HTTP 版本也确实是 HTTP2.0 的,访问成功了!

# 扩展

httpx 库还支持异步请求,异步操作请查看这一篇博客
链接

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

ASXE 微信支付

微信支付

ASXE 支付宝

支付宝

ASXE 贝宝

贝宝