最近刚接触网络爬虫,写到分布式爬虫的url去重的时候感到很疑惑,网上看到的HashSet、MD5和BloomFilter都是单机上的,集群中难道只能用分布式数据库来检索?还有其他的好办法么,或者已经成熟的框架么?
你可以用类似分片的方式来解决,比如简单点的通过域名的首字母来切分,某实例只负责a,b,c等,当此实例找到其他域名后,通过mq消息到不同队列(或类似rabbitmq的exchange根据topic进行划分到不同队列),对应字母的服务从指定队列中拉取相关信息后继续你的爬虫过程。
最简单的方法,就是用redis之类的库记录是否已访问过。
复杂点的就是楼上的切分处理
写爬虫的童鞋可以试试神箭手云爬虫,自带JS渲染、代理ip、验证码识别等功能,还可以发布和导出爬取的数据,生成图表等,都在云端进行,不需要安装开发环境。
开发文档参考:http://doc.shenjianshou.cn/
官方开发者QQ群:342953471