JSpider学习三 —— 启动代码分析

来源:互联网 发布:什么是大数据服务 编辑:程序博客网 时间:2024/05/18 03:59

jspider.sh----------------------------------------------------------------------------------------------

    JSpider从jspider.sh文件运行,在该shell脚本中指定了如下几个变量:

    JSPIDER_HOME,JSpider的主目录,通过该目录去寻找conf/、output/、errors/等文件夹;

    JSPIDER_OPTS,系统自定义的命令参数,定义了主目录、日志配置文件等内容;

    JSPIDER_CLASSPATH,指定系统自带Jar包的类路径。

    最后通过命令 java -cp $JSPIDER_CLASSPATH:$CLASSPATH $JSPIDER_OPTS net.javacoding.jspider.JSpider$1 $2 启动了Java程序。

net.javacoding.jspider.JSpider----------------------------------------------------------------------------------------------

    原来用eclipse导入project来查看JSpider的源码,这样并没有把文件中的类源码和引用关联起来,阅读不方便。我重新导入,这次选择了project from existing ant build file,导入后自动把源码和引用关联起来了,而且自动加入了build相关的其他配置,也有了错误提示。Ant需要后续补充学习。

    Java的主方法中:

    首先通过CLI.printSignature()做了些提示工作,其中的一个常量BUILDTIMESTAMP不清楚如果写入code中的;

    然后检查了参数个数,如果没有参数或者多余2个参数就提示后直接结束;

    如果只有一个参数,调用ConfigurationFactory的getConfiguration()新建一个具有默认配置的JSpiderConfiguration实例;否则用第二个参数作为配置新建一个JSpiderConfiguration实例;

    第一个参数用来生成一个URL实例,进而产生一个JSpider实例,最后调用JSpider的start方法。

    JSpider的成员:

    SpiderContext实例context,爬虫的一个上下文关系,由SpiderContextFactory根据传入的URL生成;

    Spider实例spider,理解为一个爬虫程序,由SpiderNest类的实例的breedSpider(context)方法生成;

    void start()方法,调用spider.crawl(context)方法,奇怪这里又传了一次context。

    下一步将分析Spider的代码,以及JSpiderConfiguration与Spider的关系。