首先,阿星祝大家五一快乐丫~
提示:文末有福利!最新Python爬虫资料/学习指南
话不多说,开始学习
HTTP 响应
学习目的
掌握常用的响应状态码
- 响应状态码
响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
状态码
Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
分类 | 分类描述 |
---|---|
1 | 信息,服务器收到请求,需要请求者继续执行操作 |
2 | 成功,操作被成功接收并处理 |
3 | 重定向,需要进一步的操作以完成请求 |
4 | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
最常用的响应状态码
◆200 (OK): 找到了该资源,并且一切正常。
◆301(Moved Permanently): 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
◆302 (Found): 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆400 (Bad Request): 请求出现语法错误。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。
◆500 (Internal Server Error): 服务器遇到了意料不到的情况,不能完成客户的请求
◆503 (Service Unavailable): 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头
HTTP Request header
使用Fiddler 能很方便的查看Reques header, 点击Inspectors tab ->Request tab-> headers 如下图所示
header 有很多,比较难以记忆,我们也按照Fiddler那样把header 进行分类,这样比较清晰也容易记忆。
>>>
Cache 头域
- If-Modified-Since
实例如下图
- If-None-Match
实例如下图
- Pragma
- Cache-Control
还有其他的一些用法, 我没搞懂其中的意思, 请大家参考其他的资料
Client 头域
- Accept
- Accept-Encoding:
- Accept-Language
- User-Agent
- Accept-Charset
Cookie/Login 头域
Cookie:
作用: 最重要的header, 将cookie的值发送给HTTP 服务器
Entity头域
- Content-Length
- Content-Type
Miscellaneous 头域
- Referer:
Transport 头域
- Connection
- Host(发送请求时,该报头域是必需的)
HTTP Response header
同样使用Fiddler 查看Response header, 点击Inspectors tab ->Response tab-> headers 如下图所示
我们也按照Fiddler那样把header 进行分类,这样比较清晰也容易记忆。
Cache头域
- Date
- Expires
- Vary
Cookie/Login 头域
- P3P
- Set-Cookie
Entity头域
- ETag
- Last-Modified:
- Content-Type
- Content-Length
- Content-Encoding
- Content-Language
Miscellaneous 头域
- Server:
- X-AspNet-Version:
- X-Powered-By:
Transport头域
- Connection
Location头域
- Location
HTTP协议是无状态的和Connection: keep-alive的区别
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系
HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)
从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间
总结
Python爬虫基础入门系列(10) 就到这啦,阿星祝你早日修炼成为爬虫大佬!当然,如果你准备系统地学爬虫及更多Python编程技术,可戳我文末的名片,Free领取最新Python爬虫资料/免费咨询/学习规划~
戳我名片 · 领取福利