Http状态码用以表示网页服务器http响应状态的3位字符代码.
1xx系列(临时响应):
代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.如
100:(:continue)初始的请求已经接受,客户应当继续发送请求的其余部分.
2xx系列(成功):
代表请求已成功被服务器接收,理解,并接受如:
200(:ok):服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.
3xx系列(重定向):
这类状态码代表需要客户端采取进一步的操作才能完成请求.通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明.最好不要超过5次.如
300(:multiple_choices):针对请求,服务器可执行多种操作.客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出.如果服务器要提出优先选择,则应该在Location应答头指明.
301(:moved_permanently):请求的网页已永久移动到新位置.并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一.
304(:not_modified):如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 爬虫自从上次抓取后网页没有变更,进而节省带宽和开销.
4xx(请求错误)系列:
表示客户端的差错,如请求中有错误的语法或不能完成.这些状态码表示请求可能出错,妨碍了服务器的处理.如:
400(:bad_request):服务器不理解请求的语法.
401(:unauthorized):客户试图未经授权访问受密码保护的页面.
403(:forbidden):资源不可用.服务器理解客户的请求,但拒绝处理它.通常由于服务器上文件或目录的权限设置导致.
404(:not_found):服务器找不到请求的网页.例如,对于服务器上不存在的网页经常会返回此代码.
5xx系列(服务器错误)
这些状态码表示服务器在处理请求时发生内部错误.这些错误可能是服务器本身的错误,而不是请求出错.
500(:internal_server_error):服务器遇到了意料不到的情况,不能完成客户的请求.
502(:bad_gateway):服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答.
301 && 302
301和302都是请求的网页转移到新位置,但是301的请求是将网页永久的转向新的位置,从而永久的替换之前的位置.也就是告诉爬虫以后请求的位置就永久的改为此,之前的作废.而302的请求是临时性的,就是此次请求位置变动,但之后的请求仍为原来的位置,一些搜索引擎的爬虫会继续抓取原有位置并编制索引. 如:做好了一个网站,但现在感觉比如单品的界面的url比较乱,想采用更直观的"/user/product"的方式,这时我们的状态码就应该使用301,因为需要废弃之前的url,永久的告诉爬虫此页面url改为此.