博客
关于我
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输入输出练习,运算练习,turtle初步练习
查看>>
Python pip工具使用
查看>>
Python pip配置国内源
查看>>
Python Plotly 将轴数格式化为 %
查看>>
Redis 键值过期操作
查看>>
python predictabel_基于R语言PredictABEL包对Logistic回归模型外部验证
查看>>
Python psycopg2 超时
查看>>
Python Pyinstaller Matplotlibrary
查看>>
Python Pypi 修改 国内源(以豆瓣源为例)
查看>>
Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
查看>>
Python PyQt5:如何使用 PyQt5 显示错误消息
查看>>
Python PYSFTP-以字符串/文本形式传递私钥,而不是传递文件路径
查看>>
Python pytest 面试题!
查看>>
Python pytz 时区函数返回一个相差 9 分钟的时区
查看>>
python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
查看>>
Python random和json模块
查看>>
Python random模块seed理解
查看>>
python range()函数
查看>>
Python rdflib可传递查询
查看>>
Redis 配置高可用和搭建集群
查看>>