问题引入:

网络爬虫爬取的对象的是Web,我们将它称之为服务端,而爬虫就是本地的客户端。那么要怎样才能使客户端与服务端建立连接并爬取数据呢?这时就需要利用HTTP了

什么是HTTP?

1.HTTP:超文本传输协议(Hypertext Transfer Protocol,简称:HTTP)它是一个简单的请求-响应协议,架构运行在TCP之上。这套协议定义了客户端可发送什么样的请求(Request)信号和服务器可返回什么样的响应(Response)。
它的作用是规定www服务器与浏览器之间信息传递规范,是二者共同遵守的协议。

2.当用户使用浏览器输入网址访问目标网站时,需要向网站服务器发送HTTP请求,通过发送请求即可从服务器获取页面内容的响应。但实际上服务器只会发送网页代码,我们所看到的页面效果是经过浏览器渲染而成的

请求类型:

1.HTTP请求类型有八种:(GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT)
2.但我们常用的只有两种:GET和POST。

  • GET : 用于获取数据,一般用于搜索排序和筛选之类的操作。
  • POST :用于将数据发送给服务器,一般用于修改和写入数据,比如注册一个表单账号。

3.因为网络爬虫是爬取数据,获取数据用到的是GET,所以POST很少被用于爬虫。

HTTP请求的组成

  1. HTTP请求由三部分组成:(请求行;请求头;请求体
  • 请求行:请求方法、请求路径、HTTP协议及版本组成。
  • 请求头:包含Host,User-Agent,Accept(用于告诉服务器一些相关的信息)
  • 请求体:向服务器发送的附加信息

  • 请求行

    • GET:请求类型,也可以为POST
    • User/info:需要访问的URL根路径(你需要访问的服务器资源根URL)
    • HTTP/1.1:HTTP传输协议及1.1版本
  • 请求头

    • Host:主机域名,也就是网站域名,结合请求头的路径即可得到一个完整的路径
    • User-Agent:用于告诉服务器客户端相关的信息(如请求是通过什么工具发出的,工具类型和版本是什么)。
    • Accpet:用于告诉服务器客户端想要接收的资源类型
  • 请求体

    • {…}:用于传给服务器任意数据(POST方法为空)
  1. 我们也可以通过浏览器的调试功能来查看这些参数,以百度为例,向百度的服务器发送请求。快捷键F12打开调试,刷新,打开NetWork,随便找个文件,即可看到请求数据,

HTTP响应的组成:

  1. 当客户端浏览器发送以上请求后,服务器会根据请求内容响应给浏览器相关数据。
  2. 响应由三大部分组成:(状态行;请求头;请求体
  • 状态行:包含了协议版本,状态码和状态信息
  • 请求头:包含Host,User-Agent,Accept(用于告诉服务器一些相关的信息)
  • 请求体:向服务器发送的附加信息

  • 状态行

    • HTTP/1.1:HTTP传输协议及1.1版本
    • 200:状态码为200
    • OK:和状态码相对应,表示服务器请求成功
  • 请求头

    • Date:表示的是服务器响应的时间
    • Content-Type:服务器所返回内容的类型及编码格式
  • 请求体

    • 为服务器要给客户端响应的内容。一般是HTML代码,即网页源码
  1. 通过调试,我们同样可以查看服务器的响应

总结

  1. 了解HTTP请求和响应的原理后,将会对网络爬虫有了跟多的看法,对后期的学习也有很大的帮助。
  2. 下期将利用Python发送一个爬虫请求。