Python网络爬虫_HTTP请求与响应【2】
问题引入:
网络爬虫爬取的对象的是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请求的组成
- HTTP请求由三部分组成:(请求行;请求头;请求体)
- 请求行:请求方法、请求路径、HTTP协议及版本组成。
- 请求头:包含Host,User-Agent,Accept(用于告诉服务器一些相关的信息)
- 请求体:向服务器发送的附加信息
请求行:
- GET:请求类型,也可以为POST
- User/info:需要访问的URL根路径(你需要访问的服务器资源根URL)
- HTTP/1.1:HTTP传输协议及1.1版本
请求头:
- Host:主机域名,也就是网站域名,结合请求头的路径即可得到一个完整的路径
- User-Agent:用于告诉服务器客户端相关的信息(如请求是通过什么工具发出的,工具类型和版本是什么)。
- Accpet:用于告诉服务器客户端想要接收的资源类型
请求体:
- {…}:用于传给服务器任意数据(POST方法为空)
- 我们也可以通过浏览器的调试功能来查看这些参数,以百度为例,向百度的服务器发送请求。快捷键F12打开调试,刷新,打开NetWork,随便找个文件,即可看到请求数据,
HTTP响应的组成:
- 当客户端浏览器发送以上请求后,服务器会根据请求内容响应给浏览器相关数据。
- 响应由三大部分组成:(状态行;请求头;请求体)
- 状态行:包含了协议版本,状态码和状态信息
- 请求头:包含Host,User-Agent,Accept(用于告诉服务器一些相关的信息)
- 请求体:向服务器发送的附加信息
状态行:
- HTTP/1.1:HTTP传输协议及1.1版本
- 200:状态码为200
- OK:和状态码相对应,表示服务器请求成功
请求头:
- Date:表示的是服务器响应的时间
- Content-Type:服务器所返回内容的类型及编码格式
请求体:
- 为服务器要给客户端响应的内容。一般是HTML代码,即网页源码
- 通过调试,我们同样可以查看服务器的响应
总结
- 了解HTTP请求和响应的原理后,将会对网络爬虫有了跟多的看法,对后期的学习也有很大的帮助。
- 下期将利用Python发送一个爬虫请求。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Almango!
评论