snoics-reptile 网页爬虫2.0

资源大小: 4.57MB
资源类型:rar文件
发布人: chenxh   等级:50    
发布日期: 3个月前
Tag: java java源码 java网络爬虫 另类其它 网页爬虫
资源分: 0
下载人数: 672

软件说明:

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无法辨认

共有评论
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|版权声明|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright©2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo