Scrapy-抓取的响应与其外壳等效的编码不同

时间:2019-11-16 20:34:59

标签: scrapy

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

即使用蜘蛛抓取时:

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

b'text / html; charset = utf-8'

使用刮板外壳时:

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

b'text / html; charset = iso-8859-1'

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

谢谢

1 个答案:

答案 0 :(得分:0)

无论您在不同情况下获得不同响应头的原因如何,如果响应一致地使用的编码(ISO-8859-1)并不总是与Content-Type响应头匹配,请阅读响应正文作为response.body中的字节,并用.decode('iso-8859-1')进行解码。