以下是一个Java爬虫程序,它能从指定主页开始,按照指定的深度抓取该站点域名下的网页并维护简单索引。本人补充给出该爬虫程序的流程图,希望对众读者更容易地读懂程序有所帮助。需要说明的是,流程图中省去生成抓取报告和索引文件的过程。
参数:private static int webDepth = 2;//爬虫深度。主页的深度为1,设置深度后超过该深度的网页不会抓取。
private int intThreadNum = 10;//线程数。开启的线程数。
抓取时也会在程序源文件目录下生成一个report.txt文件记录爬虫的运行情况,并在抓取结束后生成一个fileindex.txt文件维护网页文件索引。
本程序用到了多线程(静态变量和同步),泛型,文件操作,URL类和连接,Hashtable类关联数组,正则表达式及其相关类。运行时需使用命令行参数,第一个参数应使用
Find a new url,depth:2 http://e.baidu.com
Find a new url,depth:2 http://top.baidu.com
Find a new url,depth:2 http://ir.baidu.com
Find a new url,depth:2 http://www.baidu.com/duty/
Find a new url,depth:2 http://hi.baidu.com/baidu/
Get web successfully! http://www.baidu.com
Getting web by url: http://passport.baidu.com/?login&tpl=mn
Getting web by url: http://news.baidu.com
Getting web by url: http://tieba.baidu.com
Getting web by url: http://zhidao.baidu.com
Getting web by url: http://mp3.baidu.com
Getting web by url: http://image.baidu.com
Getting web by url: http://video.baidu.com
Getting web by url: http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com
Find a new url,depth:3 http://news.baidu.com/
Find a new url,dep百度排名th:3 http://www沈阳网站设计.baidu.com/
Find a new url,depth:3 http://tieba.baidu.com/
Find a new url,depth:3 http://hi.baidu.com/
Find a new url,depth:3 http://tieba.baidu.com/
Find a new url,depth:3 http://zhidao.baidu.com/
Find a new url,depth:3 http://mp3.baidu.com/
Getting web by url: http://hi.baidu.com
Find a new url,depth:3 http://hi.baidu.com/
Find a new url,depth:3 http://image.baidu.com/
Find a new url,depth:3 http://video.baidu.com/
Find a new url,depth:3 http://passport.baidu.com/?getpass