一、问题
今天在初次使用Scrapy框架时遇到了一些问题,在此记录以下,备用。
在Scrapy框架中,AttributeError: 'Decompressor' object has no attribute 'process'
这样的错误通常与gzip或其它压缩格式的数据解压过程有关。当尝试对响应内容进行解压缩时,如果使用的解压工具或方法不正确,可能会导致这样的错误。
在处理HTTP响应时,如果服务器返回的是gzip压缩过的数据,Scrapy会自动处理解压缩的过程。但如果由于某种原因,比如自定义中间件或其他地方直接操作压缩数据时,如果没有正确实例化并使用解压类,例如gzip.Decompressobj
,而是错误地调用了不存在的process
方法,就会抛出这样的异常。
标准的gzip模块并没有process
方法,它通常使用 decompress()
方法来分块解压数据。确保在处理压缩响应时使用了正确的API方法是非常关键的。
二、我的解决方法
在Scrapy settings.py中添加以下代码之后,Scrapy不再自动处理来自服务器的压缩响应(如gzip压缩)。这意味着Scrapy不会尝试解压缩接收到的数据,从而避免了上述提到的解压缩过程中可能遇到的AttributeError。
COMPRESSION_ENABLED = False