ants-go
最进在用golang开发的一个分布式的爬虫
github:https://github.com/wcong/ants-go
由来
一直用scrapy抓数据。scrapy的分布式部署,需要人分配抓取链接,感觉很麻烦,一直想搞一个自动分发请求的分布式爬虫。
基于scrapy改了一简陋的分布式爬虫ants,但是动态语言写起来有些混乱,正好正在学go,就用go写了一个分布式爬虫ants-go
爬虫架构参考是scrapy,分布式的架构参考的是elasticsearch.
目前已经可以试用,欢迎大家来拍砖.
主要的功能
- 分布式抓取数据
- 自动选取master,各个node连接到master形成集群
- master node分发请求,各个node执行完将结果发回master
- 定制spider
- 定制解析函数,不同链接对应不同的解析函数
- spider可以实现多个cookiejar保存不同cookie数据
- goquery解析html
- web api
主要模块
- http:提供外部接口,查看cluster状态,开启spider,查看抓取状态
- tcp:node之间连接,分发请求,汇总结果
- node:管理当前节点
- cluster:管理集群状态
- distributer:把cluster队列的请求分发给各个node
- downloader:执行请求,把response发到队列里
- scraper:解析response,把解析的结果发到队列里
- reporter:把当前node的抓取结果发送个master node
