httpx的使用

前面我们介绍了 urllib 库和 requests 库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。什么情况?这些网站强制使用 HTTP/2.0 协议访问,这时 urllib 和 requests 是无法爬取数据的,因为它们只支持 HTTP/1.1,不支持 HTTP/2.0。那这种情况下应该怎么办呢?

还是有办法的,只需要使用一些支持 HTTP/2.0 的请求库就好了,目前来说,比较有代表性的是 hyper 和 httpx,后者使用起来更加方便,功能也更强大,requests 已有的功能它几乎都支持。

本节我们介绍 httpx 的使用。

示例

下面我们来看一个案例,https://spa16.scrape.center/ 就是强制使用 HTTP/2.0 访问的一个网站,用浏览器打开此网站,查看 Network 面板,可以看到 Protocol 一列都是 h2,证明请求所用的协议是 HTTP/2.0,如图 2-13 所示。

这个网站用 requests 是无法爬取的,不妨来尝试一下:

import requests


url = 'https://spa16.scrape.center/'
response = requests.get(url)
print(response.json())

运行结果如下:

安装

基本使用

Client对象

支持 HTTP/2.0

支持异步请求

总结

本节介绍了 httpx 的基本用法,该库的 API 与 requests 的非常相似,简单易用,同时支持 HTTP/2.0,推荐大家使用。