浅谈简单爬虫架构

前言

这个假期我开始系统地学习python,列一下我所知的python学习网站:

  1. 廖雪峰的官方网站
  2. 菜鸟教程
  3. 慕课网
    还有一些欢迎补充。其中菜鸟教程的和廖雪峰的内容差不多,不过廖雪峰的内容更全面一些,由浅入深,是我学习python基础知识的主要渠道,在此非常感谢廖老师!慕课网的内容则是以视频的为主,适合不喜欢看文字或者看文字看不懂的同学。

简单爬虫架构

具体实现:简单爬虫架构的实现
上个假期我用python写了个简单的爬虫Python爬虫实战:登录教务系统查成绩
而在前两天我又在慕课网看了一个介绍简单爬虫架构的视频,相比我原来写的简单爬虫,这个显然更易于维护,而且更接近真实项目,很好地运用了面向对象的编程思维。
简单介绍一下爬虫架构

爬虫架构

简单爬虫架构

首先一个爬虫由一个爬虫调度端、一个URL管理器、一个网页下载器、一个网页解析器组成,并最终得到价值数据。

爬虫工作过程

爬虫从爬虫调度端开始
爬虫调度端负责协调URL管理器网页下载器网页解析器
首先它从URL管理器中询问是否有待爬URL,若有则将待爬URL传给网页下载器网页下载器将下载的html文件传给网页解析器网页解析器将按需求解析出价值数据以及网页中新的URL,输出价值数据并将新的URL传给URL管理器。这就是一个完整的爬虫过程。
URL管理器负责管理URL,将已爬的和未爬的URL分别储存起来,能够输出未爬的URL。
网页下载器负责下载URL对应的html页面。
网页解析器根据需求解析出想要的数据。(不同需求的爬虫需设计不同的解析器,而URL管理器和网页下载器则可以基本不用更改)

具体的实现在这:简单爬虫架构的实现

面向对象思维

写到这里,我就突然理解了我们学校让我们学习编译原理的目的了。此前我一直认为学校的目的只是让我们了解一下编译技术,毕竟每周一节课,总共也才2.5个学分,要想深入学习,能够写出编译器显然不现实。现在想想其实这门课更多的是在向我们展示一个成熟完善的大项目,让我们能够对大规模的工程有更好的认识,以及能够深入理解这种面向对象的编程方式,体会到面向对象带来的便利。

在我接触到这个简单的爬虫架构以后,我发现这其实和编译器的设计原理是一样的。
编译器其实是由词法分析器语法分析器代码生成器构成的,当然中间还经过了语义分析、中间代码生成等过程。其中每部分负责各自的工作,因此我们可以分开设计,将一个大项目分散成小项目,将复杂的任务简单化。而这样的思维,便是面向对象的编程思维了。

编译器分析层次

推荐阅读更多精彩内容