猛禽的编程艺术:重构 gcrawler ( 一个基于gevent的简单爬虫框架 )
这次因为要改写一个以前用Scrapy写的爬虫,于是就拿这个自己做的东西来用——去年其实也拿这个东西做过,只是有一段时间没用了。
改写了一部分以后发现原来的代码有很多改进的方面,本来想修改修改就算了,不过改了一部分以后发现还是把整个结构重新设计一下比较好。
新的结构把原来的GCrawler和Downloader合并了,做成了一个Scheduler。整个爬虫的工作流程比原来清晰很多,使用上也简单很多。
当然,这样一来就牺牲了原来Cralwer和Downloader分离时可以定制Downloader的灵活性,不过这个问题其实也不大,只需要从Scheduler里派生并override那个fetch方法,也是可以实现的。
更BT的需求还可以直接去修改Scheduler——反正也没几行代码,我大概花了一上午就写好这个版本代码的初稿。当然,现在的代码是后来在实际使用中作了很多修补工作以后的。
代码就不贴了,直接看最新的源码吧。原来那个google code的已经不更新了,因为众所周知的原因,国内使用google服务相当的不顺畅,所以目前已经搬到bitbucket。本来也想去人气更旺的github,为此我还特地装了hg-git,结果发现github也很不顺畅,于是就去了bitbucket。
bitbucket:https://bitbucket.org/raptorz/gcrawler
新的代码和原来一样是两个文件:一个是主模块文件,另一个是测试用例兼使用方法说明。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。