网络基础
1.网络协议
OSI七层模型
应用层 | 提供应用程序间通信 | 7 |
---|---|---|
表示层 | 处理数据格式,数据加密等 | 6 |
会话层 | 建立,维护和管理会话 | 5 |
传输层 | 建议主机端到端连接 | 4 |
网络层 | 寻址和路由选择 | 3 |
数据链路层 | 提供介质访问,链路管理等 | 2 |
物理层 | 比特流传输 | 1 |
TCP/IP协议栈
应用层 | 提供应用此程序网络接口 |
---|---|
传输层 | 建立端到端连接 |
网络层 | 寻址和路由的选择 |
数据链路层 | 物理介质访问 |
物理层 | 二进制数据流传输 |
SSH:安全外壳协议,基于TCP,使用22号端口,为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
1.1HTTP协议
HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是基于TCP的应用层协议客户端和服务端进行通信的一种规则,它的模式非常简单,就是客户端发起请求,服务端响应请求。
1.2HTTP请求
GET 从服务器获取指定(请求地址)的资源的信息,它通常只用于读取数据,就像数据库查询一样,不会对资源进行修改。
POST 向指定资源提交数据(比如提交表单,上传文件),请求服务器进行处理。数据被包含在请求正文中,这个请求可能会创建新的资源或更新现有的资源。
PUT 通过指定资源的唯一标识(在服务器上的具体存放位置),请求服务器创建或更新资源。
DELETE 请求服务器删除指定资源。
HEAD 与GET方法类似,从服务器获取资源信息,和GET方法不同的是,HEAD不含有呈现数据,仅仅是HTTP头信息。HEAD的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获得资源的元信息(元数据)。
OPTIONS 该方法可使服务器传回资源所支持的所有HTTP请求方法
1.3HTTP响应
状态行:包含HTTP协议版本,状态码和状态描述,以空格分隔
响应头:即消息报头,包含一系列的键值对
响应正文:返回内容,注意和响应头之间有一个空行
1.4HTTP状态码
1xx消息 --请求已被服务接收,继续处理
2xx成功-- 请求已成功被服务器接收,理解,并接受
200OK
201 Created已创建
202 Accepted接收
203 Non-Authoritative Information 非认证信息
204 No Content 无内容
3XX 重定向 --需要后续操作才能完成这一请求
301 Moved Permanently 请求永久重定向
302 Moved Temporarily 请求临时重定向
304 Not Modified 文件未修改,可以直接使用缓存文件
305 Use Proxy 使用代理
4XX 请求错误--请求含有词法错误或者无法被执行
400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。
404 Not Found 请求的资源不存在,例如,输入了错误的URL
5xx 服务器错误--服务器在处理某个正确请求时发生错误
500 Internal Server Error服务器发生不可预期的错误,导致无法完成客户端的请求
503 Service Unavaiable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常
504 Gateway Time-out 网关超时
2.requests模块的深度解析
2.1 requests模块的安装
2.2 requests模块的基本请求方法
2.3 requests模块保持登录凭据
2.4 requests设置代理
IP池和隧道代理的区别
IP池:动态IP池中获取的是大量的IP,需要爬虫自己切换代理IP,并发送请求
代理隧道:只需要将请求发给隧道,由隧道自行选择可用代理并转发请求
3.正则表达式
常用元字符
. | 匹配换行符以外的任意字符 |
---|---|
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
量词:控制前面的元字符出现的次数
* | 重复零次或更多次 |
---|---|
+ | 重复一次或更多次 |
? | 重复零次或一次 |
重复n次 | |
重复n次或更多次 | |
重复n到m次 |
贪婪匹配和惰性匹配
.* | 贪婪匹配,尽可能多的去匹配结果 |
---|---|
.*? | 惰性匹配,尽可能少的去匹配结果 ->回溯算法 |