博客
关于我
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 numpy矩阵索引_python – 在2D numpy ndarray或numpy矩阵中获取前N个值的索引
查看>>
Python OCR库:自动化测试验证码识别神器!
查看>>
python opencv - 斑点检测或圆形检测
查看>>
Python OpenCV HoughLinesP 无法检测线
查看>>
Python OpenCV-使用透明度覆盖图像
查看>>
python Opencv图像基础操作
查看>>
Python OpenCV将图像转换为字节字符串?
查看>>
python OpenCV视频的读取及保存
查看>>
python open和file的区别
查看>>
python open读取文件并对换行进行处理
查看>>
python os, os.path和sys模块
查看>>
Python os.environ 处理环境变量
查看>>
python os.path模块常用方法详解
查看>>
python os.system
查看>>
Python os.system执行多条语句,os.system的返回值以及与os.popen的区别
查看>>
Python os和sys模块
查看>>
python os文件/目录
查看>>
Python Package 之 Faker(随机姓名、电话)
查看>>
python运算符优先级
查看>>
Python Panda TIME 系列重新采样
查看>>