[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页面的呢?
接下来我们就来一个一个的学习。提升自己的内功就在于点滴的积累。
- 课程大纲
- 入门篇
- 爬虫是什么
- 为什么要学习爬虫
- 爬虫的基本原理
- TCP/IP协议族的基本知识
- HTTP协议基础知识
- HTML基础知识
- HTML_DOM基础知识
- urllib3库的基本使用
- requests库的基本使用
- Web页面数据解析处理方法
- re库正则表达式的基础使用
- CSS选择器参考手册
- XPath快速了解
- 实战练习:百度贴吧热议榜
- 进阶篇
- 服务端渲染(CSR)页面抓取方法
- 客户端渲染(CSR)页面抓取方法
- Selenium库的基本使用
- Selenium库的高级使用
- Selenium调用JavaScript方法
- Selenium库的远程WebDriver
- APP移动端数据抓取基础知识
- HTTP协议代理抓包分析方法
- Appium测试Android应用基础环境准备
- Appium爬虫编写实战学习
- Appium的元素相关的方法
- Appium的Device相关操作方法
- Appium的交互操作方法
- 代理池的使用与搭建
- Cookies池的搭建与用法
- 数据持久化-数据库的基础操作方法(mysql/redis/mongodb)
- 执行JS之execjs库使用
- 高级篇
- Scrapy的基本知识
- Scrapy的Spider详细介绍
- Scrapy的Selector选择器使用方法
- Scrapy的Item使用方法
- Scrapy的ItemPipeline使用方法
- Scrapy的Shell调试方法
- Scrapy的Proxy设置方法
- Scrapy的Referer填充策略
- Scrapy的服务端部署方法
- Scrapy的分布式爬虫部署方法
- Headless浏览器-pyppeteer基础知识
- Headless浏览器-pyppeteer常用的设置方法
- Headless浏览器-反爬应对办法
- 爬虫设置技巧-UserAgent设置
- 反爬策略之验证码处理方法
- 反爬识别码之点击文字图片的自动识别方法
- 反爬字体处理方法总结
- 防止反爬虫的设置技巧总结
- 实战篇
- AJAX接口-CSDN技术博客文章标题爬取
- AJAX接口-拉购网职位搜索爬虫
- 执行JS示例方法一之动漫图片地址获取方法
- JS执行方法示例二完整mangabz漫画爬虫示例
- 应用实践-SOCKS代理池爬虫
- 落霞小说爬虫自动制作epub电子书
- 一种简单的适用于分布式模式知乎用户信息爬虫实现示例
- 法律安全说明