pyspider优势所在
pyspider非常适合那种很小很杂的爬虫的管理,比如有100个小网站,规则又各不相同,我要获取他的一些很简单的内容,如标题,所有的图片,正文内容。他分为几个模块:scheduler,fetcher,processor,resultworker以及一个ui,前三者各自分离,用消息队列连接,因此很容易做成分布式(或者说设计之初就是为了分布式的)。
scheduler
了解scheduler之前,先了解两个概念,一个是project,代表着一个项目,如百度爬虫项目;一个是task,代表一个爬取任务,如爬取百度首页,爬取某一个新闻业,都是一个task。
与scheduler相关的队列有三个
- scheduler2fetcher 也就是scheduler中的out queue,用于发送task给fetcher
- status_queue 用于从processor中获取已经爬取的task的状态并做相应处理
- newtask_queue 新产生的task
scheduler负责调度,与scrapy或者其他的爬虫框架类似,调度器负责调度需要爬取的内容,决定哪些内容在哪些时候进行爬取。我们从代码入手看下pyspider的调度器做了啥。
def run<