当前位置: 首页 > 科技观察

每日一技能:谁说Scrapy不能爬HTTP-2?

时间:2023-03-23 10:42:40 科技观察

之前有一个爬虫大佬写过一篇文章,说HTTP/2协议自然可以阻止大部分爬虫。Pythonrequests和Scrapy都不支持HTTP/2协议。Go+HTTP/2[1]本站可以检测你是否使用HTTP/2协议发出请求。当我们直接使用浏览器访问时,页面是这样的:注意红框中的文字但是如果我们直接使用Scrapy访问这个页面并打印源代码,返回的HTML是这样的:注意红框内的文字红框是这样的,好像Scrapy不支持HTTP/2协议?但是为什么我总是强调阅读官方文档而不是搜索一些垃圾博客呢?因为在官方文档中,已经明确告知Scrapy不仅原生支持HTTP/2,而且只需要更改一项配置:设置——Scrapy2.5.0文档[2]。只需更改下载器的句柄即可。请注意上图中红框标注的地方。根据它的描述,我只需要更新settings.py文件中的下载器句柄(handlers)。让我们测试一下。直接复制以下代码到Scrapy爬虫中:DOWNLOAD_HANDLERS={'https':'scrapy.core.downloader.handlers.http2.H2DownloadHandler',}改完后重新运行爬虫,打印出来的源码如图下图提示:如你所见,不需要安装任何额外的库。Scrapy原生支持HTTP/2。参考文献[1]Go+HTTP/2:https://http2.golang.org/[2]设置——Scrapy2.5.0文档:https://docs.scrapy.org/en/latest/topics/settings。html#download-handlers-base

最新推荐
猜你喜欢