平时写的爬虫,有多个url时,只能一个一个请求,这叫同步的爬虫方式,速度耶比较慢。
为了解决这样的问题,一种非抢占式的异步技术被创造了出来,这种方式叫多协程(在此,多是多个的意思)。
它的原理是:一个任务在执行过程中,如果遇到等待,就先去执行其他的任务,当等待结束,再回来继续之前的那个任务。在计算机的世界,这种任务来回切换得非常快速,看上去就像多个任务在被同时执行一样。
所以,要实现异步的爬虫方式的话,需要用到多协程。在它的帮助下,我们能实现前面提到的“让多个爬虫替我们干活”。
用gevent模块可以让爬虫同时去请求多个url,如下
from gevent import monkey
monkey.patch_all()
#monkey的patch_all()能把程序变成协作式运行,可以帮助程序实现异步
#一定要先执行这一步,再执行接下来的import,不然会报错
import gevent
import requests
url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#把8个网站封装成列表。
def cr