爬虫工程师在数据采集过程中,不可避免地会遇到各种各样的问题。我们需要快速地对HTTP请求返回的各种异常状态码来判断处理,以便于我们及时调整爬虫策略,优化思路,及时完成作业。

正常情况下,在使用代理IP时会出现以下错误状态码:

一、代理链接失败

还没开始,就是失败的情况也是非常常见的,工欲善其事必先利其器,我们在购买代理IP之前,先抓取几个测试一下IP地址是否失效。

二、http状态码1XX系列

请求已被接受,需要继续处理。

值得一提的是,除非在某些试验条件下,服务器禁止向此类客户端发送此类响应。

三、http状态码2XX系列

代表请求已成功被服务器接收、理解、并接受。

最常见的有200、201状态码:

1.http状态码200

请求已成功,请求所希望的响应头或数据体将随此响应返回

2.http状态码201

请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。

2.http状态码202

服务器已接受请求,但尚未处理

四、http状态码3XX系列

需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址在本次响应的 Location 域中指明。

1.http状态码301

被请求的资源已永久移动到新位置。

服务器返回此响应时,会自动将请求者转到新位置。

2.http状态码302

一般访问HTTPS的网站,会出现自动跳转,这属于正常现象,如果访问的是http网站,出现302就是网站拒绝服务,这时候,出现大量302,就需要我们进行优化爬虫策略。

五、http状态码4XX系列

4XX系列:表示请求错误。代表了客户端可能发生了错误,妨碍了服务器的处理。

1.http状态码401

请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

2.http状态码403

服务器拒绝请求,可能由目标网站的防护措施导致,建议升级爬虫策略。

与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。

3.http状态码404

404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。

这个状态码被广泛应用于:当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

4.http状态码407

代理认证信息错误,需要用户认证,需要带正确的用户认证头。

5.http状态码429

返回这个状态码有两种可能:

1.请求超过了代理的限制,我们需要控制好每个代理IP的请求,降低请求或者增加IP量,例如可以按照300毫秒为单位进行管理;

2.如果大量出现429,就证明是目标网站有反爬机制,限制爬虫的请求。

六、http状态码5XX系列

服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

1.http状态码500

服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

一般来说,这个问题都会在服务器的程序码出错时出现。

2.http状态码503

由于临时的服务器维护或者过载,服务器当前无法处理请求。

这个基本是暂时状态,一段时间会恢复

3.http状态码504

返回504有两种情况:

1.代理正在切换IP,休息一段时间再试即可;

2.目标网站不可达,也就是目标网站封了代理IP,需要做爬虫优化