scrapy - 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 替换字符。有任何想法吗?
谢谢
解决方案
无论您在不同场景中获得不同响应标头的原因是什么,如果响应始终使用ISO-8859-1
不总是与Content-Type
响应标头匹配的编码 (),则将响应正文作为字节读取response.body
并使用.decode('iso-8859-1')
.
推荐阅读
- php - 在反向代理后面运行的 apache2/php 容器不尊重重定向中的转发端口和原型?
- xamarin.forms - 如何在跨平台移动应用项目(VS 2017/Xamarin)中实现 WkWebView?
- docker - 无法删除 Docker 容器中的文件夹
- angular - Angular CLI 6 - 使用源映射构建 Angular 库
- angular - 运行 ng build 后 index.html 不直接放在 dist 文件夹下
- c++ - 从命令行将文本文件读入向量
- derby - Artifactory 问题(可能与 Derby 有关)
- c++ - 从函数返回一个包含另一个对象的对象
- azure - 到 Azure Web 应用程序的 VSTS 发布管道部署到 wwwroot 子目录
- build - 如何使 CMake 使用环境变量 LD_LIBRARY_PATH 和 C_INCLUDE_DIRS