博客
关于我
python请求html_使用Python请求获取HTML?
阅读量:798 次
发布时间: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 | ttkbootstrap,一个神奇的 Python 库!
查看>>
python | unoconv,一个超厉害的 Python 库!
查看>>
python | urllib3,一个超强的 Python 库!
查看>>
python | webassets,一个超强的 Python 库!
查看>>
python | werkzeug,一个不可思议的 Python 库!
查看>>
python | xlsxwriter,一个实用的 Python 库!
查看>>
python | xlwings,一个非常实用的 Excel 相关的 Python 库!
查看>>
python | xmltodict,一个非常厉害的 关于XML数据 Python 库!
查看>>
python | xonsh,一个超酷的 Python 库!
查看>>
python | yagmail,一个实用的 Python 库!
查看>>
python | 一文掌握Python的上下文管理器和with语句
查看>>
python | 一文看懂Python闭包机制与变量作用域规则
查看>>
python读取含中文的json
查看>>
python | 如何用Python锁避免并发错误?
查看>>
python | 提升代码迭代速度的Python重载方法
查看>>
python | 深入理解Python并发编程中的GIL限制与解决方案
查看>>
Python | 爬虫实战——亚马逊搜索页监控(附详细源码)
查看>>
python | 高效使用Python工具自动生成模块文档的秘诀
查看>>
python 一个list去除另一个list中的值
查看>>
python 三大框架的 介绍。
查看>>