一行配置,大幅减少Python爬虫的流量占用

413 阅读1分钟

在通过Chrome访问HTTPS的地址时,我们会发现Chrome的Accept-Encoding这个Header的内容是gzip, deflate, br,这里br对应的是brotli压缩算法,支持br的服务器返回的Content-Encodingheader的内容就是br。brotli压缩算法的压缩效率相对于gzip要高很多,这篇文章中提到,使用brotli时,html文件体积比gzip小21%,js文件比gzip比小15%,css文件比gzip小25%。

从2015年到现在brotli已经得到了大量的网站,CDN服务商和建站服务的支持。所以使用brotli不仅仅可以减少服务器的流量占用,对于大规模爬虫应用来说,在发送请求时在Accept-Encoding这个Header中加上br,同样也可以客观的减少使用的流量。

对于Python爬虫来说,最为常用的请求库是requests和HTTPX,如何让它们启用对brotli的支持呢?

实际上非常简单,在requests的2.26.0版本之后,在HTTPX的0.7.0版本之后,都已经针对brotli进行了支持。只需要保证在现有的Python环境中安装了brotli的相关库,brotli或者brotlipy,那么这两个web请求库就会自动在Accept-Encoding这个Header中加上br,并不需要对代码做任何调整,非常简单。

所以对于Python爬床来说,支持brotli只需要用一行代码简单的安装上brotli或者brotlipy即可:

pip install brotli

或者

pip install brotlipy

这样的话,就可以直接大量减少爬虫的流量。如果在使用像AWS这样的以流量计费的云服务或者代理服务的话,这一部分的流量就能够可观的节约流量费用。