| 
										
								 | 
						
						
								| 
										
								 | 
						
						
								
										
												
														
																
																		
																				 
																				 FAQ
																		 
																		 
																 | 
														 
														
																
																		1、snoics-reptile是什么?
																		 
																		 
																 | 
														 
														
																    是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用 配制文件中提供的URL入口,把这个网站所有的能用浏览器通过 GET的方式获取到的资源全部抓取到本地,包括网页和各种类型 的文件,如:图片、flash、mp3、zip、rar、exe等文件。可以将整 个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。 只需要把抓取下来的网站放到web服务器(如:Apache)中,就可以 实现完整的网站镜像。
 
  | 
														 
														
																
																		2、现在已经有了其他的类似的软件,为什么还要开发snoics-reptile?
																		 
																		 
																 | 
														 
														
																    因为有些在抓取的过程中经常会出现错误的文件,而且对很多使用 javascript控制的URL没有办法正确的解析,而snoics-reptile通过对外提供 接口和配置文件的形式,对特殊的URL,可以通过自由的扩展对外提供 的接口,并通过配置文件注入的方式,基本上能实现对所有的网页都 正确的解析和抓取。
 
  | 
														 
														
																
																		3、如何使用?
																		 
																		 
																 | 
														 
														
																    a、配置 bin\snoics-configpath.xml 文件
          将配置文件中的path节点的值改为conf文件夹在系统中的绝对路径,         如: c:\snoics-reptile\conf 
 
  | 
														 
														
																    b、配置 conf\snoics-systemconfig.xml 文件
          其中parameters节点中的配置为对需要抓取的网站的参数的配置,
          以下是各个参数的说明: 
          1、websitename:
          站点的名称(不能为空,由字母和数字组成)
          2、charsetName:
          该站点使用的字符集类型
          3、website:
          将被抓取的站点的域名
          4、startpage:
          抓取的起始页面
          5、url:
          该站点中将被抓取的部分(如果留空则为整个站点,可以有多个URL,          每个URL之间使用";"隔开)
          6、remoteurlflag:
          代表远程URL的标志,没有特殊情况请不要修改此处,使用默认值 (多个之间使用";"隔开)
          7、forbidurl:
          该站点中不被抓取的部分(多个之间使用";"隔开)
          8、cachefile:
          该站点使用的缓存文件,如果缓存文件不存在则自动创建一个新的, 如果已经存在,则会载入文件中保存的信息
          9、filerootpath:
          抓取下的文件的保存路径(必须是系统中的绝对路径)
          10、indexpage:
          将被保存成index.html文件名的URL类型(多个之间使用";"隔开)
          11、filenamelength:
          页面保存到本地时,随机生成的文件名的长度
          12、cacheunitsize:
          一个cache单元的大小
          13、reptile-downloadfiletype:
          将被抓取到本地的文件类型(多个之间使用";"隔开)
          14、reptile-undownloadfiletype:
          页面被保存到本地时,该种类型的文件的URL将被改成远程的URL 地址,如果这种类型出现在reptile-downloadfiletype中时,则文件将被抓取 到本地,而URL也将改成本地的URL(多个之间使用";"隔开) 
 
  | 
														 
														
																    c、在参数配置好之后,执行bin/run.bat文件
 
  | 
														 
												
										 
								 | 
						
						
								
										4、如何扩展接口?
										 
										 
								 | 
						
						
								    扩展接口使用的配置文件是:conf/snoics-reptile-urlregex.xml
      首先加入一段如下的配置,其中正则表达式部分应该特定的需要自己给出,     reptile-replace-string用来代替URL出现的位置,在程序执行的过程中,该部分     会被自动替换。     <bean id="ahrefRegexUrl" class="com.snoics.reptile.regex.url.impl.UrlRegex" singleton="false">          <property name="regexUrl">              <!-- 提取可能包含URL的字符串 -->              <value><![CDATA[<[^!<>]*\shref\s*=\s*["']?[^<>]*["'\s][^<>]*>]]></value>          </property>          <property name="replaceRegexUrl">              <!-- 替换可能包含URL的字符串 -->              <value><![CDATA[<[^!<>]*\shref\s*=\s*["']?reptile-replace-string["'\s][^<>]*>]]></value>          </property>          <property name="getRegexUrl">              <!-- 提取最终URL -->              <ref bean="ahrefGetRegexUrl"/>          </property>      </bean>     
      其中ahrefGetRegexUrl是实现了com.snoics.reptile.regex.url.IGetUrlRegex     接口的类,用来从可能包含了URL的字符串里面提取其中包含的URL 
      其次加入如下的配置:
       <bean id="ahrefGetRegexUrl" class="com.snoics.reptile.regex.url.impl.AhrefGetRegexUrl" singleton="false">          <property name="regexString">               <!-- 提取最终URL -->                <value><![CDATA[href\s*=\s*["']?[^\s"]+["'\s]\s*]]></value>          </property>          <property name="unIncludeRegexString">                 <!--                       排除不需要的类型                      多个正则表达式之间使用';'隔开                    -->                  <value><![CDATA[javascript\s?:\s?;mailto\s?:\s?;^#$;]]></value>            </property>       </bean>
      最后,在如下的配置中,加入刚才配置好的部分 
      <bean id="urlRegexMap" class="com.snoics.reptile.regex.url.impl.UrlRegexMap">          <property name="ulrRegexMap">              <map>                  <!-- 名称 -->                  <entry key="ahref">                      <!-- 解析URL使用的类 -->                      <ref bean="ahrefRegexUrl"/>                  </entry>                  <entry key="src">                      <ref bean="srcRegexUrl"/>                  </entry>              </map>          </property>      </bean>
 
 
  | 
						
				
		
		
				
						
								
										
												
														5、版本历史
  
												 | 
										 
										
												2.0:
 
  | 
												核心代码全部重写,增加了扩展性,通过扩展之后,基本上能实现对整个网站完整的解析
 
  | 
										 
										
												1.0:
 
  | 
												实现了整站抓取的基本的功能,不能解析特殊的URL,对javascript无法辨认
 
  | 
										 
								
						 
						
								 下载地址:
  snoics-reptile2.0.part1.rar
  snoics-reptile2.0.part2.rar
  snoics-reptile2.0-doc.rar      
				 | 
		
	posted on 2006-05-29 21:41 
snoics 阅读(2836) 
评论(3)  编辑  收藏