一、知识点理解
异步:在一个任务未完成时,就可以执行其他多个任务,彼此不受影响。
同步:一个任务结束后才能启动下一个。
比较:异步执行任务会比同步更节省时间,能减少不必要的等待。
多协程(非抢占式异步技术):一个任务在执行过程中,如果遇到等待,就先去执行其他的任务,当等待结束,再回来继续之前的任务。在计算机的世界中这些任务的回切速度非常迅速,看上去就像多个任务被同时执行一样。
要求:实现多个爬虫同时执行任务,实现异步的爬虫方式。
二、多协程爬虫实现
前提:安装gevent库:pip install gevent -i https://pypi.douban.com/simple
from gevent import monkey #导入monkey模块
monkey.patch_all() #patch_all()方法将程序变为异步运行
import gevent, time, requests
简单实现:(创建函数,创建任务,执行所有任务)
1、定义一个爬虫函数(例如:def crawler(url))
2、用gevent.spawn(函数名,函数)函数创建任务(eg:gevent.spawn(crawler, url))
gevent只能处理gevent的任务对象,不能直接调用普通函数,需要借助gevent.spawn()来创建任务对象,参数为要调用的函数名以及被调用的函数的所有参数<