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())
运行结果如下: