自己无聊的时候做了一个微博爬虫,当初开始做的时候搜了很多功课,对于异步加载的内容,貌似模拟浏览是唯一的解决方案??于是我选用 casperjs 。虽然开发出来了,但是总结开发过程遇到这么几个问题。
1.微博很多大 V 发了条成千上万的微博,要是一直模拟下拉操作,浏览器界面越来越长,运行越来越慢,内存占用越来越高,测试过单个实例运行到大概异步加载 3000+条的时候,加载不动了。我不知道是内存不够了还是网络 io 问题,请问这个有什么解决方案吗?
2.casperjs 的并行处理。我当初想着能不能在一个节点中实现同时爬取微博,个人资料和粉丝。 casperjs 官网说并不原生支持,但是你可以创建多个实例试试看。于是我真的创建了三个实例。。。发现也可以跑。。。我想问有什么其他解决方案吗,我觉得我这样挺蠢得其实。。。
3.cluster 模块。我想用下 node 原生的负载均衡,但是 cluster 只能创建 nodejs 子进程。最初的想法是每个子进程再创建一个 casperjs 子进程,我是用 socket 作为进程通讯方式,就这样的话有多少 worker 我就得开多少端口,这种方案,我又觉得很蠢了。。。不知道有没有更好的解决方式
4.和谐问题。貌似新浪现在不用验证码卡人了,现在应该到了某个临界值,你模拟点击粉丝啊微博等页面,有很大可能会跳转到 http://weibo.cn/pub 这个页面,但是时机不定,虽然我写了跳转后校验 url 然后重连,但是有时候前一个页面所有的点击事件都会跳到这个网址,及其影响效率,但是不知道应该怎么防止跳转,开页面随机等待事件和一段时间后冷却我都有,但还是会有这种情况,不知道咋办。