学科分类
目录
网络爬虫

协程爬虫的流程分析

所谓协程,就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭遇阻塞,就切换到下一个任务继续执行,以期节省下阻塞所占用的时间。

单进程下协程和多线程区别并没有很大,相较之下,协程更节省资源、效率更高、并且更安全。

而多进程下,多线程可以利用多核资源,这是单进程的协程模型做不到的。

由于协程的切换不像多线程调度那样耗费资源,所以不用严格限制协程的数量。使用协程实现爬虫的流程如图1所示。

img

图1 协程爬虫流程分析

(1)首先将要爬取的网址存储在一个列表中,由于要针对每个网址都创建一个协程,所以需要准备一个待爬取网址列表。

(2)为每个网址创建一个协程并启动该协程。协程会依次执行,爬取对应的网页内容。如果一个协程在执行过程中出现网络阻塞或其它异常情况,则马上执行下一个协程。由于协程的切换不用切换线程上下文,消耗比较小,所以不用严格限制协程的数量。每个协程负责爬取网页,并将网页中的目标数据解析出来。

(3)将抓取到的目标数据存储在一个列表里。

(4)遍历数据列表,将数据存储在本地文件中。至此,就完成了协程爬虫的全部过程。

点击此处
隐藏目录