Python网络爬虫从入门到精通
上QQ阅读APP看书,第一时间看更新

2.1 HTTP基本原理

2.1.1 HTTP协议

当用户在浏览器中输入网址(www.mingrisoft.com)访问明日学院网站时,用户的浏览器被称为客户端,而明日学院网站被称为服务器。这个过程实质上就是客户端向服务器发起请求,服务器接收请求后,将处理后的信息(也称为响应)传给客户端。这个过程是通过HTTP协议实现的。

HTTP(HyperText Transfer Protocol),即超文本传输协议,是互联网上应用最为广泛的一种网络协议。HTTP是利用TCP在Web服务器和客户端之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。

2.1.2 HTTP与Web服务器

当在浏览器输入URL后,浏览器会先请求DNS服务器,获得请求站点的IP地址(即根据URL地址www.mingrisoft.com获取其对应的IP地址,如101.201.120.85),然后发送一个HTTP Request(请求)给拥有该IP的主机(明日学院的阿里云服务器),接着就会接收到服务器返回的HTTP Response(响应),浏览器经过渲染后,以一种较好的效果呈现给用户。HTTP基本原理如图2.1所示。

Web服务器的工作原理可以概括为以下4个步骤。

(1)建立连接:客户端通过TCP/IP协议建立到服务器的TCP连接。

(2)请求过程:客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档。

(3)应答过程:服务器向客户端发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理后得到的数据返回给客户端。由客户端解释HTML文档,在客户端屏幕上渲染图形结果。

图2.1 HTTP基本原理

(4)关闭连接:客户端与服务器断开。

步骤(2)客户端向服务器端发起请求时,常用的请求方法如表2.1所示。

表2.1 HTTP协议的常用请求方法

步骤(3)服务器返回给客户端的状态码,可以分为5种类型,由它们的第一位数字表示,如表2.2所示。

表2.2 HTTP状态码含义

例如,状态码为200,表示请求成功已完成;状态码为404,表示服务器找不到给定的资源。

2.1.3 浏览器中的请求和响应

用谷歌浏览器访问明日学院官网,查看一下请求和响应的流程。步骤如下。

(1)在谷歌浏览器中输入网址www.mingrisoft.com,按Enter键,进入明日学院官网。

(2)按F12键(或右击,选择“检查”选项),审查页面元素,运行效果如图2.2所示。

图2.2 打开谷歌浏览器调试工具

(3)单击谷歌浏览器调试工具的Network选项,按F5键(或手动刷新页面),单击调试工具中Name栏目下的www.mingrisoft.com,查看请求与响应的信息,如图2.3所示。

图2.3 请求和响应信息

从图2.3中的General概述关键信息如下。

 Request URL:请求的URL地址,也就是服务器的URL地址。

 Request Method:请求方式是GET。

 Status Code:状态码是200,即成功返回响应。

 Remote Address:服务器IP地址是101.201.120.85,端口号是80。