一起学Python网络爬虫

1 URL

URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成,如:

莫烦python
2 HTTP具体工作流程

前面已经讲过,HTTP的工作原理就是一个请求-响应交互模型,那当用户从浏览器输入网址到浏览器呈现给用户内容之间的过程到底发生了什么?下面举例来说明:

在用户点击URL为http://www.sxtyu.com/index.html的链接后,浏览器和web服务器执行了以下动作:

  • 浏览器分析超链接中的URL
  • 浏览器向DNS请求解析http://www.sxtyu.com的IP地址
  • DNS将解析出来的IP地址202.2.16.21返回浏览器
  • 浏览器与服务器建立TCP链接(80端口)
  • 浏览器请求文档:GET/index.html
  • 服务器给出响应,将文档index.html发送给浏览器
  • 释放TCP链接
  • 浏览器显示index.html中的内容
莫烦python
3 HTTP头信息

HTTP头信息分为了请求头信息和响应头信息,其中,请求头只出现在HTTP请求中,请求报头允许客户端向服务端传递请求的附加信息和客户端自身信息;响应头是服务器根据请求向客户端发送的HTTP头。

HTTP的请求头主要包含的参数信息有:

  • Host 请求报头域主要用于指定被请求资源的Internet主机和端口。
  • User-Agent 请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
  • Referer 包含一个URL,代表当前访问URL的上一个URL,也就是说,用户是从什么地方来到本页面。当前请求的原始URL地址。
  • Cookie 是非常重要的请求头,常用来表示请求者的身份等。
  • Accept 这个消息头用于告诉服务器客户端愿意接受那些内容,比如图像类,办公文档格式等等。

HTTP的响应头主要包含的参数信息有:

  • Allow:服务器支持哪些请求方法(如GET、POST等)。
  • Content-Encoding:文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。
  • Content-Length:表示内容长度。
  • Content-Type:**表示后面的文档属于什么MIME类型。**Servlet默认为text/plain,但通常需要显式地指定为text/html。
  • Date:当前的GMT时间。
  • Expires:应该在什么时候认为文档已经过期,从而不再缓存它?
  • Last-Modified:**文档的最后改动时间。**客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。
  • Location:**表示客户应当到哪里去提取文档。**Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。
  • Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。
  • Server:服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
  • Set-Cookie:设置和页面关联的Cookie。
  • WWW-Authenticate:客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。
4 HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code,一般有五种状态码:

1xx:信息提示,表示请求已被成功接收,继续处理。

2xx:请求被成功提交。

3xx:客户端被重定向到其他资源。

4xx:客户端错误状态码,格式错误或者不存在资源。

5xx:描述服务器内部错误。

常见的状态码描述如下:

200:客户端请求成功,是最常见的状态。

302:重定向。

404:请求资源不存在,是最常见的状态。

400:客户端请求有语法错误,不能被服务器所理解。

401:请求未经授权。

403:服务器收到请求,但是拒绝提供服务。

500:服务器内部错误,是最常见的状态。

503:服务器当前不能处理客户端的请求。

5 HTTP会话

WEB应用中的会话是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和响应过程。

WEB应用的会话状态是指WEB服务器与浏览器在会话过程中产生的状态信息,借助会话状态,WEB服务器能够把属于同一会话中的一系列的请求和响应过程关联起来。

6 Cookie技术

Cookie是一种在客户端保持HTTP状态信息的技术,它好比商场发放的优惠卡。

Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。

一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这个Cookie回传给WEB服务器。

WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。

一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。

浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

Cookie的传送过程示意图:

莫烦python

大家都在看

相关专题