Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 源代码发布 snoics-reptile 网页爬虫2.0
【标  题】:源代码发布 snoics-reptile 网页爬虫2.0
【关键字】:snoics-reptile,2.0
【来  源】:http://www.blogjava.net/snoics/archive/2006/06/03/50102.html

源代码发布 snoics-reptile 网页爬虫2.0

Your Ad Here
源代码发布

snoics-reptile?网页爬虫2.0?
作者: 施伟
EMail: snoics@hotmail.com
主页: http://www.blogjava.net/snoics


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

????首先加入一段如下的配置
????<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-src.part1.rar
snoics-reptile2.0-src.part2.rar

snoics-reptile2.0-src.part3.rar

snoics-reptile2.0-src.part4.rar
读取配置文件的几种方法:【上一篇】
网络安全中防火墙和IDS的作用:【下一篇】
【相关文章】
  • GTK+ 2.0 教程
  • OMA DRM2.0的实质
  • 用VB写高效的图像处理程序 V2.0(2006-5-24)
  • ASP.NET 2.0数据库入门经典(第4版)抢先试读
  • 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
  • 为ASP.NET 2.0网站生成唯一程序集
  • 一种基于.Net 2.0的另类AOP
  • ASP.NET 2.0中的客户端回调机制
  • 自定义类在vs2005(asp.net2.0)中的引用--青蛙非王子(lostfrog)
  • 让nDoc支持framework2.0
  • 【随机文章】
  • 鹰的重生--重生是如此之难,可不重生只能坐等死掉。
  • 秒秒
  • struts-config.xml中配置SQL数据源
  • [管理故事]:路遥知马力,日久见人心。
  • 小游戏(名字不知道叫什么好,反正是好像打靶的那种游戏)
  • DVD播放软件介绍
  • 事务全攻略
  • bjfnt v1.3脱壳手记
  • 为数据上保险--虚拟还原
  • 超豪華的出錯代碼
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.