自学内容网 自学内容网

Python3爬虫教程-HTTP基本原理

1,URL组成部分详解

URL是uniform Resource Locator的简写,统一资源定位符
一个URL由以下几部分组成:
在这里插入图片描述

  • scheme:代表的是访问的协议,一般为http或https以及ftp等
  • host:主机名,域名,比如www.baidu.com
  • port:端口号,http协议是80端口,https协议是443端口
  • path:查找路径。比如:www.baidu.com/trending/now,后面的trending/now就是path
  • query-string:查询字符串,用来传参。比如:www.baidu.com/s?wd=python&a=1,后面的wd=python和a=1就是查询字符串
  • anchor:锚点,后台一般不用管。前端用来做页面定位

2,HTTP和HTTPS

  • HTTP:全称是Hyper Text Transfer Protocol,中文名叫做超文本传输协议;HTTP协议是从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。
  • HTTPS:全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单将是HTTP的安全版,即在HTTP下加入SSL层,简称HTTPS。

3,HTTP请求过程

我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容。解析这个过程

  • 1,浏览器向网站所在的服务器****发送了一个请求;网页服务器****接收到这个请求后进行处理和解析;服务器返回对应的响应接着传回给浏览器;浏览器对返回的响应进行解析(相应中包含页面的源代码等内容,所以需解析);网页呈现
    在这里插入图片描述
  • 2, Chrome 浏览器开发者模式下的 Network 监听组件
    • Name:请求的名称,一般会将 URL 的最后一部分内容当作名称。
    • Status:响应的状态码,这里显示为 200,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
    • Type:请求的文档类型。这里为 document,代表我们这次请求的是一个 HTML 文档,内容就是一些 HTML 代码。
    • Initiator:请求源。用来标记请求是由哪个对象或进程发起的。
    • Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示 from cache。
    • Time:发起请求到获取响应所用的总时间。
      在这里插入图片描述

4,请求(Request)

  • 请求:客户端向服务器发出,可以分为4个部分:
    • 请求方法(Request Method)
    • 请求网址(Request URL)
    • 请求头(Request Headers)
    • 请求体(Request Body)

请求方法(Request Method)

  • 请求方法:用于标识请求客户端请求服务端的方式,常见的请求方式有两种:GET和POST
    • GET请求中的参数包含在URL里面,数据可以在URL中看到,也就是Query信息部分;而POST请求的URL不回包含这些数据,数据都是通过表单形式传输的,会包含在请求体中,
    • GET请求提交的数据最多只有1024字节,而POST方式没有限制
  • 其他请求方法:
    • HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
    • PUT 从客户端向服务器传送的数据取代指定文档中的内容
    • DELETE 请求服务器删除指定的页面
    • CONNECT 把服务器当作跳板,让服务器代替客户端访问其他网页
    • OPTIONS 允许客户端查看服务器的性能
    • TRACE 回显服务器收到的请求,主要用于测试或诊断

请求的网址(Request URL)

  • 请求的网址可以唯一确定我们想请求的资源,关于URL的构成解析如上

请求头(Request Headers)

  • 请求头用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、Uaer-Agent等
  • 常见的头信息:
    • Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
    • Accept-Language:指定客户端可接受的语言类型。
    • Accept-Encoding:指定客户端可接受的内容编码。
    • Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从 HTTP 1.1 版本开始,请求必须包含此内容。
    • Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。
    • Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
    • User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以****伪装为浏览器;如果不加,很可能会被识别为爬虫。
    • Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。

请求体(Request Body)

  • 请求体一般承载的内容是是POST请求中的表单数据,而对于GET请求,请求体为空。
  • Content-Type 和 POST 提交数据方式的关系:
    在这里插入图片描述

5、响应(Response)

  • 相应:由服务器返回给客户端,可以分为三部分:
    • 相应状态码(Response Status Code)
    • 响应头(Response Headers)
    • 响应体(Response Body)

响应状态码(Response Status Code)

  • 相应状态码:表示服务器的响应状态,如200代表服务器正常相应;404代表页面未找到;500代表服务器内部发生错误。我们可以根据状态码来判断服务器响应状态
  • 常见的错误代码及错误原因
    在这里插入图片描述
    在这里插入图片描述

响应体(Response Body)

  • 响应体:最关键的部分,相应的正文数据都在响应体中。比如请求网页时,它的响应体就是网页的 HTML 代码;请求一张图片时,它的响应体就是图片的二进制数据。我们做爬虫请求网页后,要解析的内容就是响应体。
  • 在做爬虫时,我们主要通过响应体得到网页的源代码、JSON 数据等,然后从中做相应内容的提取。

6、HTTP/2.0

  • HTTP/2.0 在内部实现上新的二进制分帧层,这是没法与之前的 HTTP/1.x 的服务器和客户端实现向后兼容的,所以直接修改了主版本号为 2.0。

二进制分帧层

  • HTTP/2.0 所有性能增强的核心就在于这个新的二进制分帧层。HTTP/2.0 做了优化,将文本格式修改为了二进制格式,使得解析起来更加高效。同时将请求和响应数据分割为更小的帧,并采用二进制编码。

多路复用

  • 在 HTTP/2.0 中,由于又了二进制分帧技术的加持,HTTP/2.0 不用再以来 TCP 连接去实现多路并行了,客户端和服务器可以将 HTTP 消息分解为互不依赖的帧,然后交错发送,最后再在另一端把它们重新组装起来

流量控制

  • 流量控制是一种阻止发送方向接收方发送大量数据的机制,以免超出后者的需求或处理能力。可以理解为,接收方已经太繁忙了,来不及处理收到的消息了,但是发送方还在一直大量发送消息,这样就会出现一些问题。

服务端推送

HTTP/2.0 新增的另一个强大的新功能是,服务器可以对一个客户端请求发送多个响应。 换句话说,除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确地请求。


原文地址:https://blog.csdn.net/Islucas/article/details/142467171

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!