http2.0啥东西呢?

可以看看下面两个文字参考链接:

超强反爬虫方案!Requests 什么的通通爬不了https://mp.weixin.qq.com/s/dFxyRYmqm5if8k-S1MjFJw

Python requests在HTTP2.0下的问题 | 小丁的个人博客https://tding.top/archives/9bd92731.html

如果你觉得浪费时间的话,可以看我下面说的,精简过的:

1. 现在很多爬虫库其实对 HTTP/2.0 支持得不好,比如大名鼎鼎的 Python 库 —— requests,到现在为止还只支持 HTTP/1.1,啥时候支持 HTTP/2.0 还不知道。

2.Scrapy 框架最新版本 2.5.0(2021.04.06 发布)加入了对 HTTP/2.0 的支持,但是官网明确提示,现在是实验性的功能,不推荐用到生产环境

插一句,Scrapy 中怎么支持 HTTP/2.0 呢?在 settings.py 里面换一下 Download Handlers 即可:

DOWNLOAD_HANDLERS = {
    'https': 'scrapy.core.downloader.handlers.http2.H2DownloadHandler',
}

当前 Scrapy 的 HTTP/2.0 实现的已知限制包括:

  • 不支持 HTTP/2.0 明文(h2c),因为没有主流浏览器支持未加密的 HTTP/2.0。
  • 没有用于指定最大帧大小大于默认值 16384 的设置,发送更大帧的服务器的连接将失败。
  • 不支持服务器推送。
  • 不支持bytes_received和 headers_received信号。

关于其他的一些库,也不必多说了,对 HTTP/2.0 的支持也不好,目前对 HTTP/2.0 支持得还可以的有 hyper 和 httpx,后者更加简单易用一些

nginx也可以配置http2.0的:

if ($server_protocol !~* "HTTP/2.0") {
return 444;
}

目前在python中,支持http2.0的:

hyper的话,不是很适用,因为很多功能跟requests库没法类比,所以这里选用httpx

前提需要安装:

pip install httpx[http2]    # 这样写才能装上支持http2的httpx,不写的话默认是不支持http2的

使用httpx:

HTTPXA next-generation HTTP client for Python.https://www.python-httpx.org

配置好后使用,正常拿数据,记得要加http=True的属性

 参考信息:

​​​​​​Python网络请求库httpx详解 - 蓝莓薄荷 - 博客园

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐