由于需要做整站抓取,所以涉及到url遍历问题。目前我的做法是以网站首页作为入口——>抓取页面所有a标签收取有效URL并去重存入集合——>递归循环抓取集合中的URL并获取新的链接——>等待递归结束或者是抓取到之前设置的URL数量上限后停止。
现在的问题是我觉得这种方式效率低,但是是又想不到更高效的方式,所以来求指点
其次是抓取量比较大,一般每次会抓取几万至几千个网站,最多的时候有几十万。目前总的抓取流程为,web服务端查询数据库并将数据入redis,其次有10台服务器部署节点程序负责遍历网站URL及抓取网页源码,然后建立lucene索引。
不过几千个网站抓取后就能产生几千万个链接,即便每台节点服务器都开启一个索引库建立索引的速度依旧不理想。之前观察过的一次是晚上下班前有三千多万个链接,第二天上班时已经全部执行完成了。不过我觉得效率并不算高,希望能有更好的解决方案,不光是效率的还有整个程序架构的。