在浏览器中输入链接并回车,就能看到展示的网页了,那我们先来瞅一眼输入的URL:
网页数据的请求和访问在应用层通常是基于HTTP(HypertextTransferProtocol,超文本传输协议),那HTTP协议是怎样封装传输的数据呢?
一个HTTP请求分为起始行,头部字段和请求体三个部分。其中,起始行包含了该请求的基本信息:请求方法,请求资源路径和请求协议/版本,是构建一个请求最基本和重要的;其次是若干行的头部字段(HEADERS),包含了该请求的描述信息,例如Cookies,Encoding和User-Agent等;最后是请求体部分,其中有具体的请求参数等信息。一般来说,常用的请求方法有GET和POST两种,其中GET方法的请求参数信息通过键值对的形式被存放在URL中,在资源路径之后通过“?”开始以key=value的方式,键值对之间用“”隔开。因此GET方法是没有请求体内容的。相对而言,POST请求的请求参数是按照访问接口要求以一定的组织方式放在请求体中,所以POST请求通常是有请求体内容的。看完请求我们来看看请求的响应。一个HTTP请求的响应也分为三个部分:状态行,头部字段和响应体。和HTTP请求一样,状态行也包含了该响应的描述信息,包括传输协议/版本,响应状态码和状态短语,一般成功的请求会得到“OK”的状态;响应头中往往包含解读响应体内容的信息,例如Encoding,Content-Type和Set-Cookie等的信息,有些信息对于数据抓取的整个流程是非常关键的;响应的内容全部都在响应体中以一定的结构呈现,常见的数据格式有HTML和JSON。Python中的HTTP了解完了HTTP协议,下面就来尝试着用Python发送一个HTTP请求。一般我们会使用requests模块(GitHub: