余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

爬虫系列 |Http请求和响应,写爬虫这些内容必须掌握

xiyangw 2023-10-03 16:22 27 浏览 0 评论

爬虫是建立在网络请求的基础上。所以在开始爬虫之前一定要有一定的网络知识。

一、HTTP协议

HTTP协议,全称为HyperText Transfer Protocol。翻译过来呢就是超文本传输协议,默认端口是80,而HTTPS呢则是在HTTP的基础上加入了SSL层,这样呢就会相对安全,请求不会那么轻易的被别人劫持。默认端口是443。

比如我们经常访问的百度、淘宝、B站、P站 等等 都是HTTPS的

当我们在浏览器中输入网址,按回车后会发生什么?

1、比如我在浏览器中输入www.p_zhan.com (别试了,这是个假网站)。首先会进行DNS解析,获取服务器的IP地址。

2、然后客户端和服务器端会建立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: 信息

消息:

描述:

100 Continue

服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。

101 Switching Protocols

服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。

103 Checkpoint

用于 PUT 或者 POST 请求恢复失败时的恢复请求建议。

2xx: 成功

消息:

描述:

200 OK

请求成功(这是对HTTP请求成功的标准应答。)

201 Created

请求被创建完成,同时新的资源被创建。

202 Accepted

供处理的请求已被接受,但是处理未完成。

203 Non-Authoritative Information

请求已经被成功处理,但是一些应答头可能不正确,因为使用的是其他文档的拷贝。

204 No Content

请求已经被成功处理,但是没有返回新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。

205 Reset Content

请求已经被成功处理,但是没有返回新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。

206 Partial Content

客户发送了一个带有Range头的GET请求,服务器完成了它。

3xx: 重定向

消息:

描述:

300 Multiple Choices

多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。

301 Moved Permanently

所请求的页面已经转移至新的 URL 。

302 Found

所请求的页面已经临时转移至新的 URL 。

303 See Other

所请求的页面可在别的 URL 下被找到。

304 Not Modified

未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

305 Use Proxy

客户请求的文档应该通过Location头所指明的代理服务器提取。

306 Switch Proxy

目前已不再使用,但是代码依然被保留。

307 Temporary Redirect

被请求的页面已经临时移至新的 URL 。

308 Resume Incomplete

用于 PUT 或者 POST 请求恢复失败时的恢复请求建议。

4xx: 客户端错误

消息:

描述:

400 Bad Request

因为语法错误,服务器未能理解请求。

401 Unauthorized

合法请求,但对被请求页面的访问被禁止。因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败。

402 Payment Required

此代码尚无法使用。

403 Forbidden

合法请求,但对被请求页面的访问被禁止。

404 Not Found

服务器无法找到被请求的页面。

405 Method Not Allowed

请求中指定的方法不被允许。

406 Not Acceptable

服务器生成的响应无法被客户端所接受。

407 Proxy Authentication Required

用户必须首先使用代理服务器进行验证,这样请求才会被处理。

408 Request Timeout

请求超出了服务器的等待时间。

409 Conflict

由于冲突,请求无法被完成。

410 Gone

被请求的页面不可用。

411 Length Required

"Content-Length" 未被定义。如果无此内容,服务器不会接受请求。

412 Precondition Failed

请求中的前提条件被服务器评估为失败。

413 Request Entity Too Large

由于所请求的实体太大,服务器不会接受请求。

414 Request-URI Too Long

由于 URL 太长,服务器不会接受请求。当 POST 请求被转换为带有很长的查询信息的 GET 请求时,就会发生这种情况。

415 Unsupported Media Type

由于媒介类型不被支持,服务器不会接受请求。

416 Requested Range Not Satisfiable

客户端请求部分文档,但是服务器不能提供被请求的部分。

417 Expectation Failed

服务器不能满足客户在请求中指定的请求头。

5xx: 服务器错误

消息:

描述:

500 Internal Server Error

请求未完成。服务器遇到不可预知的情况。

501 Not Implemented

请求未完成。服务器不支持所请求的功能,或者服务器无法完成请求。

502 Bad Gateway

请求未完成。服务器充当网关或者代理的角色时,从上游服务器收到一个无效的响应。

503 Service Unavailable

服务器当前不可用(过载或者当机)。

504 Gateway Timeout

网关超时。服务器充当网关或者代理的角色时,未能从上游服务器收到一个及时的响应。

505 HTTP Version Not Supported

服务器不支持请求中指明的HTTP协议版本。

511 Network Authentication Required

用户需要提供身份验证来获取网络访问入口。

感谢大家的支持和喜欢,小编会每天分享更多Python学习的干货知识给大家,所以大家别忘了关注小编哦。

更多Python爬虫、数据分析、办公自动化、全栈开发、人工智能学习资料可以私信@林夕编程关键字【资料】领取

相关推荐

排序算法--归并排序_归并排序例题讲解

原理如图所示(先分割再合并):归并排序代码工作原理:1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排序序列的起始位置3、比较两个指针所...

八大排序算法-归并排序_归并排序 算法

算法思想归并排序分为三个步骤:1.分解:将数列分解成n个子数列。(如果是将数列分成2个子数列则为2路归并)2.治理:对每个子数列进行排序操作3.合并:将两个排好序的子数列进行合并生成新的数列算法实现P...

高级排序之归并排序、希尔排序_希尔排序和归并排序区别

前言继上次排序算法简单排序算法之冒泡、插入和选择排序-Java实现版后,本文学习高级排序算法——归并排序、希尔排序,快速排序将在后续更新。本文实现代码调用方法,部分来自前一个文章:简单排序算法之冒泡、...

Excel办公应用:按合并单元格排序的三大方法

1.按姓名对科目排序重点:在"C2"中输入公式=IF(A2<>"",1,C1+1),然后下拉填充。2.按姓名添加连续序号(方法一)重点:选择"A2:A11"单元格区域,在编辑栏中输入公...

快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

知乎上有一个问题是这样的:堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序?昨天刚...

归并排序思路图解 #归并排序_归并排序百度百科

排序算法1.图解。OK,让它排一下。看好了,要开始排了。能看出来像递归吗?肯定算法难,但是这个次数非常的多,不用管次数。这个是帝规,就是递归。这是并,这是并,这是两个有序数,组合成一个最后的大的有序数...

排序算法学习——归并排序_归并排序算法稳定吗

我们先看归并排序的定义归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每...

动画|经典的归并排序究竟怎么玩儿?

作者|菠了个菜责编|郭芮由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列——《图解数据结构》,主要使用动画来描述常见的数据...

Excel中,多列数据统一排名,Rank函数直接搞定

Rank实现多列联合排序排序,那太简单啦,Excel中,升序降序,一个按键就可以。但,那是针对单列情况,若需要联合多列数据进行排序呢?如下图所示,需要对1、3、5列进行统一排序,咋弄嘞?联合排序案例先...

【数据结构与算法】归并排序_数据结构中归并排序

归并排序是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较耗内存,今天我们聊聊归并排序排序思想一天,小一尘和慧能坐在石头上,眺望着远方师傅,我听山下的柳...

C++基础算法:归并排序_经典排序算法-----归并排序(c语言实现)

归并排序(MergeSort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。...

马士兵说之归并排序_马士兵教育的内推是真的

大家对于排序应该是挺熟悉的吧,马士兵老师特意为排序出了一波视频,当然文章是转自博客园的,马士兵老师的视频观看请点击下方的了解更多概要本章介绍排序算法中的归并排序。内容包括:1.归并排序介绍2.归并...

C++快速排序和归并排序_c++快速排序sort

快速排序每一轮挑选一个基准元素(随机选择,编程时一般选取第一个),并让比它大或小的元素移动到基准元素的两边,把数列拆解成了两个部分。而后对这两部分分别进行快速排序。时间复杂度:O(nlogn),辅助空...

经典的排序算法——归并排序_归并排序算法步骤

归并排序(MergeSort)是一种基于分治策略的高效排序算法。它将原始数组不断地分割成两个子数组,直到每个子数组只剩下一个元素为止(即基本有序),然后再通过合并已排序的子数组来最终得到完全有序的大...

归并排序_归并排序c++实现

归并排序概念:归并排序中涉及到一个概念就是分而治之,总序列化成小序列,将小序列排序好,利用排序好的小序列,再归并排序成原来要排序的序列。所以排序前先要分:functiondivide(arr){...

取消回复欢迎 发表评论: