[TOC] # 爬虫的基本原理 > 爬虫可以理解为模拟用户在浏览器或者某个应用上的操作,把操作的过程、实现自动化的程序或脚本。 爬虫是如何实现的呢? 想知道如何实现爬虫,需要先了解在浏览网页的时候都发生了什么事情?**知其然,更要知其所以然!** 接下来我们通过示例说明实现爬虫的基本原理。 ## 当我们在浏览器中输入网址`www.baidu.com`后回车发生了什么? 我们来看看这张图: ![浏览网页流程](https://img.kancloud.cn/d5/95/d59508d0a5696ec0a64814f08c75ee0b_647x491.png =400x) **浏览器与服务器之间的交互过程说明:** 1. 浏览器询问DNS服务器获取`www.baidu.com`的真实IP地址; 2. 返回真实的IP地址给浏览器; 3. 浏览器使用`真实IP地址`连接`www.baidu.com`的Web服务器,请求页面数据。 4. `www.baidu.com`的Web服务器接收到这个请求后,响应并返回页面文档数据给浏览器。 5. 可以愉快的看到页面啦。 **整个过程中的关键信息为:** 1. 浏览器与服务器之间的网络通信协议: HTTP协议 2. 浏览器与服务器之间的数据格式: HTML超文本标记格式 `HTTP协议` 的作用是建立`浏览器`与`Web服务器`之间的通信连接通道, 这个通信通道可以传一段文本信息、一个图片或者一个文件都可以。这是数据传输的基础。 `HTML超文本标记语言格式` 的作用是告诉`浏览器`应该如何显示收到的文档数据。 >注:暂时忽略DNS服务器交互过程,这与爬虫逻辑无关,它只于获取IP地址速度有关。 --- **爬虫原理本质?** 如果理解了上面的示例交互过程,那么对于理解`爬虫`的本质就不难了。 我们的`爬虫`本质就是在使用`HTTP协议` 来模拟浏览器行为与`Web服务器`交互获取`HTML`页面数据并解析处理的工具。 那么`HTTP协议`到底是什么呢?`HTML超文本标记语言`又是怎样描述Web页面的呢? 接下来我们就来一个一个的学习。提升自己的内功就在于点滴的积累。