上面这个图是我设计的爬虫架构,这个架构逻辑比较简单。小程序
首先是连接池,连接池存储须要爬取的网页连接,每一个连接有当前爬取状态,尝试次数等信息,爬取状态分为:waiting(等待),going(正在进行),success(爬取成功),fail(爬取失败)。连接的默认状态是waiting,当爬虫正在爬取这个连接的内容的时候,连接进入going状态,连接内容爬取成功进入success状态,爬取失败进入fail状态。连接的另外一个参数是尝试次数,当连接爬取失败则尝试次数加1并再次进入waiting状态,设定尝试次数阈值,好比设定阈值为3,当尝试次数超过3次,则进入fail状态。微信小程序
爬虫管理者负责建立爬虫任务,咱们能够建立一个task来按期运行爬虫管理者。爬虫管理者从爬虫池中选取必定数量的处于waiting状态的连接,建立爬虫任务。微信
爬虫任务接受一个目标连接,而后针对连接的格式运行对应的解析器。若是发现新的目标连接,则将新发现的连接放入连接池。这个地方须要注意的是爬虫在请求连接内容的时候,要使用代理,这样能够防止同一个ip频繁请求被封的状况。架构
刚开始连接池是空的,因此咱们须要放入第一个目标连接,这样爬虫会不断的发现新连接,而后将新连接做为目标连接再次爬取内容,若是效果好的话,爬虫会一直运行知道没有新的连接发现未知。工具
下面这个是我最近作的一个微信小程序,用来快速查找澳洲保健品中文信息的小工具。spa