博客
关于我
python请求html_使用Python请求获取HTML?
阅读量:796 次
发布时间:2023-03-06

本文共 955 字,大约阅读时间需要 3 分钟。

服务器正在返回错误的HTTP标头,导致数据无法正确解码。这种情况的具体原因尚不明确,但WRCCWrappers.py作为CGI脚本,它本身并不会输出HTTP标头。然而,在DOCTYPE声明之后,它包含了一个双换行符,这可能导致Apache服务器插入了额外的标头。

当使用cURL命令进行测试时,服务器返回了一个200 OK的响应,但标头中缺少有效的DOCTYPE声明。这意味着其他标头将被忽略。这种情况下,Content-Encoding: gzip标头被正确返回,但由于DOCTYPE行缺失,Apache服务器可能在处理响应时出现了问题。

此外,在Python 2环境下,HTTP标头解析器可能会将DOCTYPE声明视为一个标头,这可能进一步影响标头的处理。为了验证这一点,可以使用以下命令查看完整的HTTP响应头信息:

curl -D -o /dev/null -s -H 'Accept-Encoding: gzip, deflate' http://www.wrcc.dri.edu/WRCCWrappers.py?sodxtrmts+028815+por+por+pcpn+none+mave+5+01+F

从响应头信息来看,服务器返回了正确的Content-Encoding: gzip值,但由于DOCTYPE行缺失,Apache服务器未能正确处理压缩编码。在这种情况下,请求库(如requests)可能无法自动检测到数据是gzip编码的,因此需要手动指定Accept-Encoding标头为identity,以确保服务器不会对响应进行压缩。

解决方法是将Accept-Encoding标头设置为identity,这样服务器就不会对响应进行gzip压缩。可以通过以下方式实现:

headers = {'Accept-Encoding': 'identity'}
r = requests.get(url, headers=headers)

返回的响应将是未压缩的原始数据。在Python 2环境下,HTTP标头解析器可能会将DOCTYPE声明视为一个标头,因此需要确保在处理响应时正确解析这些标头信息。

通过以上方法,可以确保服务器不会对响应进行压缩,从而避免因HTTP标头错误导致的数据解码问题。

转载地址:http://rbofk.baihongyu.com/

你可能感兴趣的文章
Python 中内置的最大堆 API
查看>>
Python 中只有一个 True 和一个 False 对象吗?
查看>>
python读取mtcars数据集并实现以下操作_关于数据处理。。,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
查看>>
Python 中多线程与多处理之间的区别
查看>>
Python 中如何使用 lambda 函数
查看>>
Python 中如何创建多行字符串?
查看>>
Python 中如何处理异常?
查看>>
Python 中如何实现列表的切片?
查看>>
Python 中如何实现字典的排序?
查看>>
Python 中常用的数据类型及相关操作详解
查看>>
python 中文乱码
查看>>
Python 中生成器与普通函数的区别
查看>>
Python 中的 *tuple 和 **dict 是什么意思?
查看>>
Python 中的 filter() 函数:筛选可迭代对象元素
查看>>
Python 中的 Pillow 不允许我打开图像(“超出限制“)
查看>>
Python 中的 threading 模块和 multiprocessing 模块有何区别?
查看>>
Python 中的 threading 模块和 multiprocessing 模块有何区别?
查看>>
Python 中的 Turtle 库详解
查看>>
Python 中的 __slots__ 属性有什么作用?
查看>>
Python 中的... 三点、箭头(->)、/ 分别的作用
查看>>