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的关系。