这篇我也不知道该以什么形式写。想到什么些什么吧。
这一年,准备脱离爬虫的职位,以后做什么,其实我也没想好。
本篇不适合不知道pyspider是什么的人。本篇适合能够通过pyspider写一些简单的爬虫代码,想要更加深入的了解它的原理和机制的人。
队列
我们都知道,pyspider分成三个模块,fetcher,process和schduler。这三个模块,能够在一起协同工作,是因为,他们之间通过队列进行通讯。无论是rabbitmq,还是redis,或者是其他的什么东西。
schduler通过调数据库的task来分析,到底哪些需要扔进队列,之后,fetcher读取队列,爬到的结果给结果队列,process在进行解析。如果结果是return,就返回给result的地方,如果不是,重新扔给schduler。
其实刚开始,很好奇一点是,tornado是一个异步的框架,为什么pysider可以调节rate。原因就在于,这根本不是什么线程数,这只不过是队列读取task的入口数量,在通过异步的原理,来实现每秒钟爬取多少条的功能。
网友评论