segment下有以数字为目录名的目录,例如segment下有目录20061114073235,其中前面20061114为年月日,后面为随机数。
public static String getNewSegmentName() {
return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date(System.currentTimeMillis()));
}
segment下目录的个数与depth有关, 当depth=10时, 目录有10个。第一层的信息放在第一个目录下(时间最远的,数字最小的目录),第二层的信息放在第二个目录下,以此类推。
每个segment目录(例如20061114073235)下有六个目录:
content,fetcher,fetchlist,index,parse_data,parse_text
每个下面都有data和index两个文件,可以打开data文件查看。
例如有个网站有如下结构:(可以自己手工建立用于测试)
现在知道上例有三层,所以depth设为3,入口url.txt为index,产生过程如下:
1. 从index开始,在segment下新建20061114073235目录,读入url.txt文件把index注入到20061114073235\fetchlist\data中,全部注入后,在从20061114073235\fetchlist\data中依次取出url,本例只有index,请求获得index的内容并存入20061114073235\content\data,再在20061114073235\fetcher\data文件中记录下index,表示index被获取。直到一个入口url都被获取。
2. 在segment下新建20061114073240目录,读入上一层即20061114073235\fetchlist\data文件,得到index的url请求获得index中的两个link(index2,index3),注入20061114073240\fetchlist\data中,之后再取出来请求index2,获得index2的内容,存入20061114073240\content\data,再在20061114073235\fetcher\data文件中记录下index2和表示index2被获取,再循环取出来请求index3,获得index3的内容,存入20061114073240\content\data,再在20061114073235\fetcher\data文件中记录下index3和表示index3被获取。
3. 以此类推建立20061114073249目录。这样segment下有三个目录20061114073235,20061114073240,20061114073249
没有评论:
发表评论