多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 2.1.6 响应 Response,即响应,由服务端返回给客户端。Response 可以划分为三部分,Response Status Code、Response Headers、Response Body。 ## Response Status Code {#response-status-code} 响应状态码,此状态码表示了服务器的响应状态,如 200 则代表服务器正常响应,404 则代表页面未找到,500 则代表服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如判断状态码为 200,则证明成功返回数据,再进行进一步的处理,否则直接忽略。 下面用表格列出了常见的错误代码及错误原因: | 状态码 | 说明 | 详情 | | :--- | :--- | :--- | | 100 | 继续 | 请求者应当继续提出请求。服务器已收到请求的一部分,正在等待其余部分。 | | 101 | 切换协议 | 请求者已要求服务器切换协议,服务器已确认并准备切换。 | | 200 | 成功 | 服务器已成功处理了请求。 | | 201 | 已创建 | 请求成功并且服务器创建了新的资源。 | | 202 | 已接受 | 服务器已接受请求,但尚未处理。 | | 203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一来源。 | | 204 | 无内容 | 服务器成功处理了请求,但没有返回任何内容。 | | 205 | 重置内容 | 服务器成功处理了请求,内容被重置。 | | 206 | 部分内容 | 服务器成功处理了部分请求。 | | 300 | 多种选择 | 针对请求,服务器可执行多种操作。 | | 301 | 永久移动 | 请求的网页已永久移动到新位置,即永久重定向。 | | 302 | 临时移动 | 请求的网页暂时跳转到其他页面,即暂时重定向。 | | 303 | 查看其他位置 | 如果原来的请求是 POST,重定向目标文档应该通过 GET 提取。 | | 304 | 未修改 | 此次请求返回的网页未修改,继续使用上次的资源。 | | 305 | 使用代理 | 请求者应该使用代理访问该网页。 | | 307 | 临时重定向 | 请求的资源临时从其他位置响应。 | | 400 | 错误请求 | 服务器无法解析该请求。 | | 401 | 未授权 | 请求没有进行身份验证或验证未通过。 | | 403 | 禁止访问 | 服务器拒绝此请求。 | | 404 | 未找到 | 服务器找不到请求的网页。 | | 405 | 方法禁用 | 服务器禁用了请求中指定的方法。 | | 406 | 不接受 | 无法使用请求的内容响应请求的网页。 | | 407 | 需要代理授权 | 请求者需要使用代理授权。 | | 408 | 请求超时 | 服务器请求超时。 | | 409 | 冲突 | 服务器在完成请求时发生冲突。 | | 410 | 已删除 | 请求的资源已永久删除。 | | 411 | 需要有效长度 | 服务器不接受不含有效内容长度标头字段的请求。 | | 412 | 未满足前提条件 | 服务器未满足请求者在请求中设置的其中一个前提条件。 | | 413 | 请求实体过大 | 请求实体过大,超出服务器的处理能力。 | | 414 | 请求 URI 过长 | 请求网址过长,服务器无法处理。 | | 415 | 不支持类型 | 请求的格式不受请求页面的支持。 | | 416 | 请求范围不符 | 页面无法提供请求的范围。 | | 417 | 未满足期望值 | 服务器未满足期望请求标头字段的要求。 | | 500 | 服务器内部错误 | 服务器遇到错误,无法完成请求。 | | 501 | 未实现 | 服务器不具备完成请求的功能。 | | 502 | 错误网关 | 服务器作为网关或代理,从上游服务器收到无效响应。 | | 503 | 服务不可用 | 服务器目前无法使用。 | | 504 | 网关超时 | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 | | 505 | HTTP 版本不支持 | 服务器不支持请求中所用的 HTTP 协议版本。 | ## Response Headers {#response-headers} 响应头,其中包含了服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等,下面将一些常用的头信息说明如下: * Date,标识 Response 产生的时间。 * Last-Modified,指定资源的最后修改时间。 * Content-Encoding,指定 Response 内容的编码。 * Server,包含了服务器的信息,名称,版本号等。 * Content-Type,文档类型,指定了返回的数据类型是什么,如text/html 则代表返回 HTML 文档,application/x-javascript 则代表返回 JavaScript 文件,image/jpeg 则代表返回了图片。 * Set-Cookie,设置Cookie,Response Headers 中的 Set-Cookie即告诉浏览器需要将此内容放在 Cookies 中,下次请求携带 Cookies 请求。 * Expires,指定 Response 的过期时间,使用它可以控制代理服务器或浏览器将内容更新到缓存中,如果再次访问时,直接从缓存中加载,降低服务器负载,缩短加载时间。 ## Resposne Body {#resposne-body} 即响应体,最重要的当属响应体内容了,响应的正文数据都是在响应体中,如请求一个网页,它的响应体就是网页的 HTML 代码,请求一张图片,它的响应体就是图片的二进制数据。所以最主要的数据都包含在响应体中了,我们做爬虫请求网页后要解析的内容就是解析响应体 ![](https://box.kancloud.cn/c3e420ad56ef77d7cfd1205c3404dd9b_2048x582.png) 我们在浏览器开发者工具中点击 Preview,就可以看到网页的源代码,这也就是响应体内容,是解析的目标。 我们在做爬虫时主要解析的内容就是 Resposne Body,通过 Resposne Body 我们可以得到网页的源代码、Json 数据等等,然后从中做相应内容的提取。