• 4.每天进步一点点-Python爬虫需要了解HTTP 响应报文


    14天学习训练营导师课程:
    杨鑫《Python 自学编程基础》
    杨鑫《 Python 网络爬虫基础》
    杨鑫《 Scrapy 爬虫框架实战和项目管理》

    HTTP 响应报文由四部分组成,依次是状态行响应头空行响应正文。下面依次 对这四部分进行介绍

    1.状态行

    状态行它由协议版本、状态码、状态码描述三个字段组成,它们之间使用空格进行分隔。比 如访问百度时,状态行的内容为 HTTP/1.1 200 OK。

    状态码分为下述五大类。

    • 1xx:指示信息,表示请求已接收,继续处理。

    • 2xx:成功,表示请求已被成功接收、理解。

    • 3xx:重定向,表示要完成请求必须进行更进一步的操作。

    • 4xx:客户端错误,表示请求有语法错误或请求无法实现。

    • 5xx:服务器端错误,表示服务器未能实现合法的请求。

    详细的状态码如表图所示,无须记忆,使用时查表即可

    1.1 状态码

    状态码简单描述详细描述
    100继续请求者应继续提出请求。服务器返回此代码表示已收到请求的一部分,正在等待其余部分
    101协议切换请求者已要求服务器切换协议,服务器已确认并准备切换
    200成功服务器已成功处理了请求
    201已创建请求成功,并且服务器创建了新的资源
    202已接收服务器已接收请求,但尚未处理
    203非授权信息服务器已成功处理了请求,但返回的信息可能来自另一来源
    204无内容服务器成功处理了请求,但没有返回任何内容
    205重置内容服务器成功处理了请求,内容被重置
    206部分内容服务器成功处理了部分请求
    300多种选择针对请求,服务器可执行多种操作
    301永久移动请求的网页已永久移动到新位置,永久重定向
    302临时移动请求的网页暂时跳转到其他页面,暂时重定向
    303查看其他位置请求对应的资源存在另一个 URI,应使用 GET 方法定向获取请求的资源
    304未修改此次请求返回的网页未修改,继续使用上次的资源
    305使用代理请求者应使用代理访问请求的网页
    307临时重定向请求的资源临时从其他位置响应
    400错误请求服务器无法解析该请求
    401未授权请求要求身份验证或验证未通过
    403禁止访问服务器拒绝请求
    404未找到服务器找不到请求的网页
    405方法禁用服务器禁用请求中指定的方法
    406不接收无法使用请求的内容特性响应请求的网页
    407需要代理授权请求者需要使用代理授权
    408请求超时服务器等候请求时发生超时
    409冲突服务器在完成请求时发生冲
    410已删除请求的资源已永久删除
    411需要有效长度服务器不接收不含有效内容长度标头字段的请求
    412未满足前提条件服务器未满足请求者在请求中设置的其中一个前提条件
    413请求实体过大请求实体过大,超出服务器的处理能力
    414请求的 URI 过长请求的 URI(通常为网址)过长,服务器无法处理
    415不支持的媒体类型请求的格式不被请求页面支持
    416请求范围不符合要求页面无法提供请求的范围
    417未满足期望值服务器未满足请求标头字段的要求
    500服务器内部错误服务器遇到错误,无法完成请求
    501尚未实施服务器不具备完成请求的功能
    502错误网关服务器作为网关或代理从上游服务器收到无效响应
    503服务不可用服务器目前无法使用(由于超载或停机维护)
    504网关超时服务器作为网关或代理没有及时从上游服务器收到请求
    505HTTP 版本不受支持服务器不支持请求中所用的 HTTP 版本

    2.响应头

    2.1 常见的响应头

    它包含了服务器对请求的一些应答信息,常见响应头如图表所示。

    常见响应头

    响应头解释示例
    Accept-Ranges表明服务器是否支持指定范围请求及支持哪种类型的分段请求Accept-Ranges:bytes
    Age从原始服务器到代理缓存形成的估算时间(以秒计,非负)Age:12
    Allow对某网络资源的有效的请求行为,不允许则返回 405Allow:GET, HEAD
    Cache-Control告诉所有的缓存机制是否可以缓存及缓存哪种类型Cache-Control:no-cache
    Content-EncodingWeb服务器支持的返回内容压缩编码类型Content-Encoding:gzip
    Content-Language响应正文的语言Content-Language:en,zh
    Content-Length响应正文的长度Content-Length:348
    Content-Location请求资源可替代的备用的另一地址Content-Location:/index.htm
    Content-MD5返回资源的 MD5 校验值Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ==
    Content-Range在整个返回体中本部分的字节位置Content-Range:bytes 21010-47021/47022
    Content-Type返回内容的 MIME 类型Content-Type:text/html; charset=utf-8
    Date原始服务器消息发出的时间Date:Tue, 15 Nov 2010 08:12:31 GMT
    ETag请求变量的实体标签的当前值ETag:“737060cd8c284d8af7ad3082f209582d”
    Expires响应过期的日期和时间Expires:Thu, 01 Dec 2010 16:00:00 GMT
    Last-Modified请求资源的最后修改时间Last-Modified:Tue, 15 Nov 2010 12:45:26 GMT
    Location用来重定向接收方到非请求 URL 的位置以完成请求或标识新的资源Location:http://blog.csdn.net/coder_pig
    Pragma包括实现特定的指令,它可应用到响应链上的任何接收方Pragma: no-cache
    Proxy-Authenticate它指出认证方案和可应用到代理的该URL 上的参数Proxy-Authenticate:Basic

    3.空行

    响应头的最后会有一个空行,表示响应头结束,接下来是响应正文。这个空行必不 可少。

    4.响应正文

    Content-Type 指定响应正文的 Mime 类型,比如 text/html 类型响应正文为 HTML 代码, image/png 类型响应正文为 PNG 图片的二进制数据。

  • 相关阅读:
    Google DataFlow入门与(Pub/Sub-DataFlow-BigQuery解决方案)
    【无标题】
    tflite 学习——生成.tflite 模型与验证
    【Python3】【力扣题】290. 单词规律
    Java【数组】定义与使用,什么是引用类型你知道吗
    产业互联网的商业模式并非平台模式这么简单
    HTML5基础:label,select,textarea
    性能测试监控-java分析工具Arthas
    什么是向量量化层以及向量量化层在生成模型中的作用
    Windows下Pytorch环境配置(Anaconda、CUDA、CUDNN、Pytorch)
  • 原文地址:https://blog.csdn.net/u014096024/article/details/128139483