python 爬虫基础(一)
HTTP基本原理
1.URL和URI的关系
URI全称为Uniform Resource Identifier,即统一资源标志符。URL的全称为Universal Resource Locator,即统一资源定位符。简单来说,URL是URI的一个子集,即URL一定是URI,而URI不一定是URL。URI还包括一个子集URN。当下互联网中,URN用得非常少,以URL为主,一般的网页链接均为URL。
2.超文本
参见什么是超文本?
3.HTTP和HTTPS
HTTPS 是在HTTP协议基础上加入了SSL层,因此称为HTTPS。TLS协议是在SSL3.0的版本基础上发展起来的。ssl/tls主要提供3个功能:
- 用户身份校验功能
- 数据加密功能
- 数据完整性验证功能
HTTP和HTTPS 均为应用层协议,传输层协议任为TCP协议。
可以理解如下:
HTTP协议运行于TCP协议之上,HTTPS=HTTP+SSL/TLS。
4.HTTP 请求过程
浏览器输入URL到页面展示的过程
参考【HTTP】 在浏览器输入url后的流程
整个流程大致如下:
- DNS域名解析
- TCP连接
- HTTP请求
- 处理请求返回HTTP响应
- 页面渲染
- 生成dom树
- 生成css规则树
- 生成渲染树
- 绘制
- 显示
- 关闭连接
5.HTTP请求
5.1 HTTP方法
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式:
方法 | 描述 |
---|---|
GET | 请求页面,返回内容,参数包含在URL内,提交数据大小有限制,大小因浏览器以及服务器的不同而不同,一般在几kb之内 |
POST | 大多用于提交表单或上传文件,数据包含在请求体中,提交数据大小没有限制 |
HEAD | 类似于GET请求,不过返回的响应中没有具体内容,主要用于获取报头 |
PUT | 从客户端向服务器传送数据取代知道文档中的内容 |
DELETE | 请求服务器删除指定页面 |
CONNECT | 把服务器当做跳板,让服务器代替客户端访问其他网页 |
OPTIONS | 允许客户端查看服务器性能,在axios中,被用作跨域处理方案的一部分 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
实际工作中,最常用的是GET和POST
5.2HTTP请求头
HTTP请求头常用来说明服务器需要的附加信息,场景的如下
- Accept: 请求报文头域,用于指定客户端可以接受哪些类型的信息。
- Accept-Language:指定客户端可以接受的语言类型。
- Accept-Encoding:指定客户端可以接受的内容编码。
- Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的地址。HTTP1.1开始,请求必须包含该内容。
- Cookie:也常用复数Cookies,是服务器端为了辨识用户进行绘画跟踪而存储在用户本地的数据,主要功能是为了卫视当前访问会话。每次浏览器请求服务器站点页面时,都会在请求头中加上Cookies,发送给服务器,服务器通过Cookies辨识用户以及用户状态(登录等)。
- Referer: 此内容用于标记这个请求是从哪个页面发过来的,服务器可以拿到该信息并做相应处理,如防盗链等。
- User-Agent:简称UA,是一个特殊的字符串,可以使服务器识别客户使用的操作系统及版本,浏览器及版本等。做爬虫时加上此信息,可以伪装为浏览器。
- Content-Type:也叫互联网媒体类型或者MIME类型,在HTTP协议请求头中,用来表示具体请求中的媒体类型信息。
5.3 HTTP请求响应头
- Date:标识响应产生的时间。
- Last-Modifed:指定资源的最后修改时间。
- Content-Encoding:指定响应内容的编码。
- Server:包含服务器的信息,比如名称、版本号等。
- Content-Type:文档类型,指定返回的数据类型是什么,如text/html代表返回HTML文档。
- Set-Cookie:设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求
- Expires:指定响应的过期时间。