前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫基础讲解(五):响应

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

作者头像
松鼠爱吃饼干
发布2021-09-24 10:38:24
5360
发布2021-09-24 10:38:24
举报
文章被收录于专栏:Python分享Python分享

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了。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 松鼠爱吃饼干 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HTTP响应报文
    • 响应行
    • 响应头
      • 响应体
        • 响应内容
        • 2. 常见的响应方法
        • 3. 状态码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档