前面一篇文章,我们介绍了Python3环境下如何安装requests。除了这个环境安装之外,我还建议你安装一个Python IDE环境,我这边用Pycharm这个工具,下载和安装以及简单设置Pycharm环境。在使用requests之前,我们需要花时间去学习和了解HTTP协议,requests是处理HTTP相关的一个功能强大的类库。
1. HTTP的含义是什么
Hypertext Transfer Protocol (HTTP),中文翻译过来就是超文本传输协议。
2.HTTP协议的定义
我把wikipedia上的定义复制过来:TheHypertext Transfer Protocol (HTTP) is an application protocol (应用层)for distributed(分布式), collaborative(协作式), and hypermedia information systems(超文本信息系统). HTTP is the foundation of data communication for theWorld Wide Web.(HTTP是互联网的基石)。概念很专业和绕口,我们只需要简单了解下就可以。
3.一个简单图形表示HTTP协议
上面有两个对象,一个是寄件人,另一个是收件人;有两个处理流程,一个是发信,另一个是回信。这个生活之中的发信和收信很形象地表示了HTTP发送请求和处理请求的过程。寄信人相当于,HTTP中的Client端,这里一般指浏览器这样的软件,收信人相当于软件后台的Server端,也就服务器。用户在浏览器上点击一个东西,就相当于给服务器发送一个信件,服务器收到之后,就给出应答,并添加一些数据包给Client端,这个过程相当于回信。用一句话描述就是,Client端是发送请求的,Server端是处理和响应请求的。
4.HTTP协议的三次握手过程
这里把百度百科的解释贴过来。
这个结合上面的发信和收信,能够很好理解这个三次握手过程。这个问题,面试过程经常被问到,所以,平时自己还是需要准备一下,用自己能够理解的语句去描述三次握手过程。
5.用浏览器自带工具来理解用户打开百度的完整过程。
5.1 火狐浏览器打开百度首页,点击F12,注意,我在火狐上安装过firepath这个插件。
注意,一开始下图是没有数据的,我们点击“网络”,点击“HTML”,刷新百度首页,里面可以看到下面的数据。
我们先看看第一行。GET表示是HTTP请求类型是GET,常见的还有POST类型。www.baidu.com是我们请求的url,状态下有 200 OK,200表示请求正常,没有报错。时间线241表示发送和处理这个请求耗时421毫秒。
5.2 点击上面 GET www.baidu.com
我们先来看看请求头
请求头,cookies先不管,后面介绍。Host就是我们访问远程的主机,也就是Server端。user-Agent:指的是用户是用什么工具或者平台发起的HTTP请求。这里我们可以看到是火狐浏览器。
在看看响应头
响应头观察Content-Type是一个text/html文件,字符编码是uft-8,这个时候你点击上面响应这个tab,这些就百度首页的前端代码,通过渲染,就是我们平时浏览器看到的百度首页。
我们已经简单对HTTP有一个初步认识,知道发生请求和处理请求的大致过程。虽然还有很多概念,我们不了解,但是这里我们先放下,只需要有一个大概理解就可以,毕竟我们不是深入学习HTTP协议。下一篇,我们会进入简单的小demo。