【Python爬虫】HTTP协议

协议

  • 协议,意思是共同计议,协商,经过谈判、协商而定制的共同承认、共同遵守的文件。
  • 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流
  • 协议的三要素:语法、语义、时序

协议族/簇/组

  •   含义:多个相关协议的组合

    OSI模型

    TCP/IP模型常见协议
    应用层应用层HTTP、FTP、SSH、Telnet、SMTP、POP、DNS
    表示层
    会话层
    传输层传输层TCP、UDP
    网络层互联网层IP
    数据链路层网络接口层以太网、帧中继、令牌环
    物理层

超文本(HyperText)

  • 包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。
  • 这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。
  • 最常见的超文本格式是超文本标记语言HTML。

URL

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

HTTP协议

  • 含义:超文本传输控制协议
  • HTTP是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

协议的持久性/非持久性

  • 非持久性连接
    • 即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
    • HTTP1.0、HTTP0.9采用此连接方式
    • 对于请求的Web页中包含多个其他文档对象(如图像、声音、视频等)的链接的情况,由于请求每个链接对应的文档都要创建新连接,效率低下。
  • 持久性连接
    • 即在一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。

无状态性

  • 是指同一个客户端(浏览器)第二次访问一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。
  • HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。

上网冲浪的流程

  • 在用户点击URL为http://www.163.com/index.html的链接后,浏览器和Web服务器执行以下动作:
    • 浏览器分析超链接中的URL
    • 浏览器向DNS请求解析www.163.com的IP地址
    • DNS将解析出的IP地址212.2.16.21返回浏览器
    • 浏览器与服务器建立TCP连接(80端口)
    • 浏览器请求文档:GET/index.html
    • 服务器给出响应,将文档index.html发送给浏览器
    • 释放TCP连接
    • 浏览器显示index.html中的内容

报文结构

  • 请求报文:
    • 即从客户端(浏览器)向Web服务器发送的请求报文。报文的所有字段都是ASCII码

  •  返回报文
    • 即从Web服务器到客户机(浏览器)的应答。报文的所有字段都死ASCII码。

请求报文中的方法

  • 方法(Method)是对所请求对象所进行的操作,也就是一些命令
  • 请求报文中的操作有:
方法(操作)含义
GET请求读取一个Web页面
POST附加一个命名资源(如Web页面)
DELETE删除Web页面
CONNECT用于代理服务器
HEAD请求读取一个Web页面的首部
PUT请求存储一个Web页面
TRACE用于测试,要求服务器送回收到的请求
OPTION查询特定选项

返回状态码

  • 状态码(Status-Code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么
  • 状态码分为以下五类:
状态码含义例子
1xx通知信息

100=服务器正在处理客户请求

2xx成功200=请求成功(OK)
3xx重定向301=页面改变了位置
4xx客户错误403=禁止的页面;404=页面未找到
5xx服务器错误500=服务器内部错误;503=以后再试

首部字段/消息头

头(header)类型说明
User-Agent请求关于浏览器和它平台的信息,如Mozilla5.0
Accept请求客户能处理的页面的类型,如text/html
Accept-Charset请求客户可以接受的字符集,如Unicode-1-1
Accept-Encoding请求客户能处理的页面编码方法,如gzip
Accept-Language请求客户能处理的自然语言,如en(英语),zh-cn(简体中文)
Host请求服务器的DNS名称。从URL中提取出来,必须
Authorization请求客户的信息凭据列表
Cookie请求将以前设置的Cookie送回服务器,可用来作为会话信息
Data双向消息被发送时的日期和时间
Server响应关于服务器的信息,如Micrsodt-IIS/6.0
Content-Enconding响应内容是如何被编码的(如gzip)
Content-Language响应页面所使用的自然语言
Content-Length响应以字节计算的页面长度
Content-Type响应页面的MIME类型
Last-Modified响应页面最后被修改的时间和日期,在页面缓存机制中意义重大
Location响应指示客户将请求发送给别处,即重定向到另一个URL
Set-Cookie响应服务器希望客户保存一个Cookie

HTTP代理

  • HTTP代理又称Web缓存或代理服务器(Proxy Server),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在本地磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无需再次访问Internet
  • 代理就是帮你访问服务器的中介
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值