首页 > 解决方案 > Scrapy - 来自爬行的响应没有与其外壳等效的相同编码

问题描述

我遇到了编码问题,当一方面从我的蜘蛛发出完全相同的请求,而从另一侧的 scrapy shell 发出完全相同的请求时,我得到的响应不是相同的编码。

即当使用我的蜘蛛抓取时:

def parse(self, response):
    print(response.headers[b'Content-Type'])

b'文本/html;字符集=utf-8'

而在使用scrapy shell时:

scrapy shell https://www.agoravox.fr/tribune-libre/article/attentat-contre-charlie-hebdo-161711
>>> response.headers[b'Content-Type']

b'文本/html;字符集=iso-8859-1'

这是非常有问题的,因为页面是用 iso-8859-1 编码的,因此我在之后从我的蜘蛛中抓取时会得到 unicode 替换字符。有任何想法吗?

谢谢

标签: scrapy

解决方案


无论您在不同场景中获得不同响应标头的原因是什么,如果响应始终使用ISO-8859-1不总是与Content-Type响应标头匹配的编码 (),则将响应正文作为字节读取response.body并使用.decode('iso-8859-1').


推荐阅读