`

nutch爬虫之UpdateSegmentsFromDb类的作用

阅读更多

http://blog.csdn.net/lianqiang198505/archive/2006/10/17/1338155.aspx

nutch的爬虫运行过程中有这样的一个调用(在CrawlTool中):

// update segments from db

        UpdateSegmentsFromDb updater =

            new UpdateSegmentsFromDb(nfs, db, segments, dir);

        updater.run();

正如注释所说,这段代码的作用就是从webdb中的当前信息来对segments文件夹下的网页得分和anchor信息进行更新;之所以进行这个步骤是因为,在运行了上面代码的以上其他抓取步骤后,在segments文件夹的子文件夹中的fecher文件夹下存放的关于网页的得分和anchor信息不是最新的(这个是因为,爬虫运行完抓取后,每一个segments文件夹下的子文件夹是一层抓取产生的结果,然后我们利用上一层的抓取结果去更新webdb,然后再由webdb产生fetchlist,然后我们再由fetchlist中的内容去进行抓取,我们应该注意的一点是在每一次更新webdb时候,webdb中存放的网页的得分和指向该网页的连接信息可能会改变的,比如新爬回的网页有指向以前网页的连接时得分信息就会改变,但是在我们抓取时候每一次抓取的信息是分层的,存在segemnts文件夹下不同的子文件夹中,在各个不同层之间的由连接产生的最新得分信息只有且只有在webdb中才有体现,所以为了保证segment文件夹中的得分信息的最新,我们应该有这个步骤),我们就利用上面的代码来保证segments中信息的最新.

  在UpdateSegmentsFromDb类中有三个内部类,分别是:

1.         SegmentPage,它是用来存放关于urlsegments文件夹下子文件的名称信息;

2.         ByUrlComparatorBySegmentComparator,这两个类的作用是对存放好的以SegmentPage实例为key的文件进行排序;

3.         Update,它用来存放的是新的网页得分和anchors信息;

  这几个类的具体详细作用和代码中的部分细节剖析如下:

1.      SegmentPage就是用来存放webdb中所有的url信息和url对应的segments文件夹下子文件夹的名称,它可以被按照ByUrlComparatorBySegmentComparator两个类中的排序方法分别按照urlsegments文件夹下子文件夹的名称进行排序,以被以后更新信息时候用;

2.      ByUrlComparatorBySegmentComparator都是用来进行排序,其中前者主要的目的是为了适应在webdb中存储的内容是有按照url排序的,这样就可以按照顺序有序的从webdb中取得相应的网页信息;而后者的主要目的是为了保证更新的文件夹按照一定的顺序,即更新完一个文件夹后更新另一个;

3.      我们可以发现,在这个代码中最重要的函数是类的成员方法close(),在这个里面包含了全部核心的处理部分

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics