当前位置: 首页 > 后端技术 > Python

履带系列-2.Http请求和响应,这些内容在写爬虫的时候一定要掌握

时间:2023-03-26 17:34:06 Python

爬虫都是基于网络请求的。所以在开始爬取之前你必须要有一定的网络知识。1、HTTP协议HTTP协议的全称是HyperTextTransferProtocol。翻译过来就是HypertextTransferProtocol,默认端口是80,HTTPS是在HTTP的基础上加了SSL层,所以会比较安全,请求不会那么容易被别人劫持。默认端口为443,比如我们经常访问的百度、淘宝、B站、P站等都是HTTPS。当我们在浏览器中输入网址并回车时,会发生什么?下面是简单的说明,更多的细节大家可以自行参考1、比如我在浏览器中输入www.p_zhan.com(不要试,这是假网站)。首先进行DNS解析,获取服务器的IP地址。2.然后client和server会建立TCP连接,连接过程是三次握手。三次握手后,客户端和服务端就会建立可靠的链路,然后就可以进行数据传输了。3、发送HTTP请求,浏览器输入的地址请求方式为GET请求!4.获取服务器的响应。响应码分为2xx、3xx、4xx、5xx等。5.解码内容,如果数据需要显示,则由浏览器渲染。请求方式:虽然在HTTP/1.1中定义了8种请求类型,但是掌握以下6种就足够了。GET:发送的请求是获取服务器上的资源。请求体中不会包含请求数据,请求数据会放在协议头中。POST:向服务器提交资源,如表单提交、上传文件等,请求数据会放在请求体中HEAD:本质与GET相同。但不返回消息的主体部分,用于确认URI的有效性和资源的更新时间等。PUT:常用于上传文件。DELETE:删除文件OPTIONS:查询请求资源支持的请求方式。响应码:响应码,又称状态码,是一个3位的代码,表示页面服务器超文本传输??协议的响应状态。1xx:Informationmessage:说明:100Continue服务器只收到了请求的一部分,但是一旦服务器不拒绝请求,客户端应该继续发送请求的其余部分。101SwitchingProtocols服务器转换协议:服务器会遵从客户端的请求,切换到另一种协议。103Checkpoint用于PUT或POST请求恢复失败时的恢复请求建议。2xx:SuccessMessage:Description:200OKRequestSuccess(这是对成功HTTP请求的标准响应。)201Created请求被创建,一个新的资源被创建。202Accepted已接受处理请求,但处理未完成。203Non-AuthoritativeInformation请求已成功处理,但部分响应头可能不正确,因为使用了另一个文档的副本。204NoContent请求已成功处理,但没有返回新文档。浏览器应继续显示原始文档。如果用户定期刷新页面并且servlet可以确定用户的文档足够新,则此状态代码很有用。205重置内容请求已成功处理,但未返回新文档。但是浏览器应该重置它显示的内容。用于强制浏览器清除表单输入。206PartialContent客户端发送了带有Range头的GET请求,服务器完成了它。3xx:重定向消息:说明:300多项选择。链表。用户可以选择一个链接到达他们的目的地。最多允许五个地址。301MovedPermanently请求的页面已移动到新的URL。302Found请求的页面已暂时移至新的URL。303SeeOther请求的页面可以在另一个URL下找到。304NotModified文档未按预期修改。客户端已缓存文档并发出条件请求(通常通过提供If-Modified-Since标头指示客户端只需要比指定日期更新的文档)。服务器告诉客户端可以继续使用原来的缓冲文档。305UseProxy客户端请求的文档应该通过Location标头指定的代理服务器检索。306SwitchProxy不再使用,但代码仍然保留。307TemporaryRedirect所请求的页面已暂时移至新的URL。308ResumeIncomplete用于PUT或POST请求恢复失败时的恢复请求建议。4xx:ClientErrorMessage:Description:400BadRequest由于语法错误,服务器无法理解请求。401Unauthorized合法的请求,但禁止访问请求的页面。因为请求的页面需要认证,客户端没有提供或者认证失败。402需要付款此代码尚不可用。403Forbidden是一个合法的请求,但是禁止访问请求的页面。404NotFound服务器找不到请求的页面。405MethodNotAllowed请求中指定的方法不被允许。406NotAcceptable服务器产生的响应不能被客户端接受。407ProxyAuthenticationRequired用户必须先使用代理服务器进行身份验证,请求才能被处理。408RequestTimeout请求超过了服务器的等待时间。409Conflict由于冲突,请求无法完成。410Gone请求的页面不可用。411LengthRequired“Content-Length”未定义。如果没有此内容,服务器将不会接受请求。412PreconditionFailed请求中的前提条件被服务器评估为失败。413RequestEntityTooLarge服务器不会接受请求,因为请求的实体太大。414Request-URITooLong服务器不会接受请求,因为URL太长。当POST请求转换为带有很长查询消息的GET请求时,就会发生这种情况。415UnsupportedMediaType服务器将不接受请求,因为不支持该媒体类型。416RequestedRangeNotSatisfiable客户端请求文档的一部分,但服务器无法提供请求的部分。417ExpectationFailed服务器不能满足客户端在请求中指定的请求头。5xx:服务器错误消息:说明:500InternalServerError请求未完成。服务器遇到不可预测的情况。501NotImplemented请求没有完成。服务器不支持请求的功能,或者服务器无法完成请求。502BadGateway请求未完成。服务器在充当网关或代理时收到来自上游服务器的无效响应。503ServiceUnavailable服务器当前不可用(过载或停机)。504GatewayTimeout网关超时。服务器作为网关或代理时,未能及时收到上游服务器的响应。505HTTPVersionNotSupported服务器不支持请求中指定的HTTP协议版本。511NetworkAuthenticationRequired用户需要提供身份验证才能获得网络访问权限。