三、HTTP响应
1、一个完整的请求可以分为响应行、响应头 、响应数据
1.1 响应行
响应行又可以分为协议版本、状态码、状态描述。
协议版本并非一定会对应请求的版本。
状态描述简短的描述了状态码,其中常用的状态码有200(响应正常)、404(页面找不到)、502(服务器内部错误)。开发爬虫的过程中经常还会见到302(重定向)、403(禁止访问)。
下图为一个HTTP响应行
1.2 响应头
响应头同请求头一样为key-value,其实响应头和请求头可以合称HTTP头 。
HTTP头部字段有的为请求和响应通用,有的为其一单独使用。
下图为一个HTTP响应头
1.3 响应数据
响应数据经过浏览器渲染就变成了我们看到的网页。但其实响应数据并非只有html一种格式,还可以是json、图片的二进制流等等。
在编写爬虫的时候,特别希望能够响应json,因为json格式对简单明了啦,据说json标准的制定者在制定json的时候就说:json足够简单有效而不需要再次更新,所以json并不像其他的网络标准一样有版本号。
json格式可以通过requests直接解析,或者可以通过原生json库解析。html可以通过beautifulSoup或者lxml解析(前提是对html语言及xpath有所了解)。当然还有正则表达式来解析。
由于响应数据太长,这里就不截图了。
总结一下,我们会发现HTTP协议足够的简单(这也是HTTP在前期能迅速发展的前提),甚至可以基于socket自定义请求和解析响应。
新开公众号“码家村”,欢迎关注