爬虫原理
1. 网络连接
网络连接就像在火车站买票一样:旅客选择好目的地,投入硬(纸)币或者刷卡,售票机就会给我们一张带有列车信息的车票。
计算机(乘客)带着请求头和消息体(目的地,车次等信息)向服务器(售票机)发起一次请求(购买车票),相应的服务器(售票机)会返回给计算机相应的HTML文件作为Response(相应的车票)。
这里是一个GET请求。我们常见的还有POST请求。
![d18fede9bffe1bde50b5013d89ace44e.png](https://i-blog.csdnimg.cn/blog_migrate/945d7866cbae6c3a5187b08eec967641.jpeg)
2. 爬虫原理
在了解了网络连接的基本原理后,爬虫原理就好理解了。网络连接需要计算机一次Request请求和服务器端的Response回应。爬虫同样也需要做两件事:
- 模拟计算机对服务器发起Request请求。
- 接收服务器的Response内容并分析其内容,提取出来。
但是我们要获取的信息通常不是只在一个页面上,这时就需要设计一个爬虫的执行流程。我们常用的有两种:
1. 多页面爬虫流程
通常这样的网站有很多页面,且每个页面的构造都类似。因此,可以使用如下流程:
- 手动翻页并观察各网页的URL构成特点,构造出所有的页面URL保存到列表中。
- 根据URL列表依次循环取出URL
- 循环调用爬虫函数,存储数据。
- 循环结束,爬虫运行结束。
![0819e7457f403fe72a5568d1fdd9e83e.png](https://i-blog.csdnimg.cn/blog_migrate/0eb680f9f2494f7a7e4a3b8fa662ab84.jpeg)
2. 跨页面爬虫流程
- 定义爬取函数爬取列表(目录)的所有专题的URL。
- 将专题URL存入列表中(种子URL)。
- 定义爬取详细页数据函数。
- 进入专题详细页面爬取详细页数据。
- 存储数据,循环完毕,爬虫结束。
![c0b2d85403aea76355a2612d4061bddc.png](https://i-blog.csdnimg.cn/blog_migrate/28eb17a3f9d2c3bac84e7b627c1e6611.jpeg)
页面构造
1. HTML语言
我们常说的网页大部分都是用HTML语言来写的。HTML是按层级规定所属关系。
![d103b968de7610212e2970c72bf82630.png](https://i-blog.csdnimg.cn/blog_migrate/4f89edf58da4058b57468e865c71fe4b.jpeg)
上面的段代码,就是HTML代码了。
我们通常称
这样的代码为
标签,即这是一个
DIV标签。
- 我们称DIV标签是table标签的父节点
- 称tr标签是table标签的子节点
- 称tr标签为div标签的孙节点
- 称两个tr的关系为兄弟节点
2. 查询网信息
我们在打开要爬取的目标网站,然后通过F12快捷键即可看到如下页面:
![94c15feec5a70652b297d907af5e0949.png](https://i-blog.csdnimg.cn/blog_migrate/605872a0721a4ba2faca2af6b159ef02.jpeg)
在这里我们可以很方便的查看目标网站的页面构成。