Python爬虫基础讲解(五):响应

2021-09-24 10:38:24 浏览数 (1)

1. HTTP响应报文

HTTP响应报文也由三部分组成:响应行、响应头、响应体

响应行

响应行一般由协议版本、状态码及其描述组成比如HTTP/1.1 200 OK

其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

设置HTTP响应头往往和状态码结合起来。例如,有好几个表示"文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WwW-Authenticate头。然而,即使在没有设置特殊含义的状态代码时,指定应答头也是很有用的。应答头可以用来完成:设置Cookie,指定修改日期,指示浏览器按照指定的间隔刷新页面,声明文档的长度以便利用持久HTTP连接,..等等许多其他任务。

常见的响应头字段含义

A77ow:服务器支持哪些请求方法(如GET、POST等)。

Content-Encoding:文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。

content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

content- Type:表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。

Date:当前的GMT时间,例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。

Expires:告诉浏览器把回送的资源缓存多长时间,-1或O则是不缓存。

Last-Modified:文档的最后改动时间。客户可以通过lf-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。

Location:这个头配合302状态码使用,用于重定向接收者到一个新url地址。表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。

Refresh:告诉浏览器隔多久刷新一次,以秒计。

server:服务器通过这个头告诉浏览器服务器的类型。Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。Servlet一般不设置这个值,而是由Web服务器自己设置。

set-Cookie:设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie",...),而是应使用HttpServletResponse提供的专用方法addCookie。

Transfer-Encoding:告诉浏览器数据的传送格式。

www-Authenticate:客户应该在Authorization头中提供什么类型的授权信息?在包401(Unauthorized)状态行的应答中这个头是必需的。

setcontentType:设置Content-Type头。大多数Servlet都要用到这个方法。

setContentLength:设置Content-Length头。对于支持持久HTTP连接的浏览器来说,这个函数是很有用的。

addcookie:设置一个Cookie(Servlet API中没有setCookie方法,因为应答往往包含多个Set-Cookie头)。

响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

响应内容

看到的html、css、js、图片、视频、音频等返回的数据

2. 常见的响应方法

代码语言:javascript复制
#获取响应体文本数据
response.text
#获取响应体二进制数据
response.content
#获取响应体json数据
response.json()
#获取响应体响应头信息
response. headers
#设置响应体的编码
response.encoding
#自动识别响应体的编码
response.apparent_encoding
#获取响应体的cookies信息,获取到的是cookiejar对象
response.cookies
#获取响应体的ur1地址
response.url
#获取响应体的状态码
response.status_code

3. 状态码

响应状态码可以很方便的查看我们的响应状态,我们可以检测响应状态码:

  1. 200:请求正常,服务器正常的返回数据。
  2. 301:永久重定向。比如在访问www.jingdong .com的时候会重定向到www.jd.com 。
  3. 302:临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。
  4. 400:请求的ur1在服务器上找不到。换句话说就是请求ur1错误。
  5. 403:服务器拒绝访问,权限不够。
  6. 500:服务器内部错误。可能是服务器出现bug了。

0 人点赞