之前有一位爬虫大佬写了一篇文章,说 HTTP/2协议天然就能防大部分的爬虫。Python 无论是 requests 还是 Scrapy 都不支持 HTTP/2协议。
10年的思南网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整思南建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“思南网站设计”,“思南网站推广”以来,每个客户项目都认真落实执行。
Go + HTTP/2[1]这个网站可以检测你是否使用 HTTP/2协议进行请求。当我们直接使用浏览器访问的时候,页面长这样:
注意红框中的文字
但如果我们直接使用 Scrapy 访问这个页面,并打印源代码,返回的 HTML 长这样:
注意红框中的文字
这样看起来,似乎Scrapy 确实不支持HTTP/2协议?
但我为什么总是一直强调要读官方文档,不要去搜索一些垃圾博客呢。因为官方文档里面,已经明确告诉你Scrapy 不仅原生支持 HTTP/2,而且只需要改一个配置就可以了:Settings — Scrapy 2.5.0 documentation[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] Settings — Scrapy 2.5.0 documentation: https://docs.scrapy.org/en/latest/topics/settings.html#download-handlers-base
网站栏目:一日一技:谁说Scrapy不能爬HTTP/2?
分享路径:http://www.shufengxianlan.com/qtweb/news37/38737.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联