我遇到一个编码问题,当我一方面从我的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替换字符。 有什么想法吗?
谢谢
答案 0 :(得分:0)
无论您在不同情况下获得不同响应头的原因如何,如果响应一致地使用的编码(ISO-8859-1
)并不总是与Content-Type
响应头匹配,请阅读响应正文作为response.body
中的字节,并用.decode('iso-8859-1')
进行解码。