我正在用scrapy编写一个自定义的缓存后端,我想将其保存到elasticsearch中,以便进行全文搜索。我得到的默认响应类型是scrapy.http.response.Response,它包含字节,当我试图对字符串进行编码时,它会转到类似于这个\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003�}�r۸��o�j�\u0001f���\u0019�C�-۲��|N2;�q�Φ���\u000b\"!�6Er\bҲN���\u001a�o�e\u001fe�d�\u001b EJ�,[ά�Ιql\u0012\u0004\u001a�F���h的地方。
所以问题是,我如何才能在HtmlResponse中得到store_response类型的响应,这样我就可以得到实际的文本!我查了一下设置计数找到了。
class ESCacheStorage(object):
....
....
def store_response(self, spider, request, response):
print("response type is {}".format(type(response)))
# response type is <class 'scrapy.http.response.Response'>
# But i want response type <class 'scrapy.http.response.HtmlResponse'>发布于 2018-03-11 03:43:53
COMPRESSION_ENABLED': False在settings.py中解决了这个问题。
https://stackoverflow.com/questions/49215863
复制相似问题