源代碼發(fā)布
snoics-reptile?網(wǎng)頁爬蟲2.0?
|
|
|
FAQ
|
1、snoics-reptile是什么?
|
????是用純Java開發(fā)的,用來進(jìn)行網(wǎng)站鏡像抓取的工具,可以使用配制文件中提供的URL入口, 把這個(gè)網(wǎng)站所有的能用瀏覽器通過GET的方式獲取到的資源全部抓取到本地,包括網(wǎng)頁和各 種類型的文件,如:圖片、flash、mp3、zip、rar、exe等文件??梢詫⒄麄€(gè)網(wǎng)站完整地下傳至 硬盤內(nèi),并能保持原有的網(wǎng)站結(jié)構(gòu)精確不變。只需要把抓取下來的網(wǎng)站放到web服務(wù)器 (如:Apache)中,就可以實(shí)現(xiàn)完整的網(wǎng)站鏡像。
|
2、現(xiàn)在已經(jīng)有了其他的類似的軟件,為什么還要開發(fā)snoics-reptile?
|
????因?yàn)橛行┰谧ト〉倪^程中經(jīng)常會出現(xiàn)錯(cuò)誤的文件,而且對很多使用 javascript控制的URL沒有辦法正確的解析,而snoics-reptile通過對外提供 接口和配置文件的形式,對特殊的URL,可以通過自由的擴(kuò)展對外提 供的接口,并通過配置文件注入的方式,基本上能實(shí)現(xiàn)對所有的網(wǎng)頁都 正確的解析和抓取。
|
3、如何使用?
|
????a、配置 bin\snoics-configpath.xml 文件
????????將配置文件中的path節(jié)點(diǎn)的值改為conf文件夾在系統(tǒng)中的絕對路徑, ????????如: c:\snoics-reptile\conf
|
????b、配置 conf\snoics-systemconfig.xml 文件
????????其中parameters節(jié)點(diǎn)中的配置為對需要抓取的網(wǎng)站的參數(shù)的配置,
????????以下是各個(gè)參數(shù)的說明:
????????1、websitename:
????????站點(diǎn)的名稱(不能為空,由字母和數(shù)字組成)
????????2、charsetName:
????????該站點(diǎn)使用的字符集類型
????????3、website:
????????將被抓取的站點(diǎn)的域名
????????4、startpage:
????????抓取的起始頁面
????????5、url:
????????該站點(diǎn)中將被抓取的部分(如果留空則為整個(gè)站點(diǎn),可以有多個(gè)URL, 每個(gè)URL之間使用";"隔開)
????????6、remoteurlflag:
????????代表遠(yuǎn)程URL的標(biāo)志,沒有特殊情況請不要修改此處,使用默認(rèn)值 (多個(gè)之間使用";"隔開)
????????7、forbidurl:
????????該站點(diǎn)中不被抓取的部分(多個(gè)之間使用";"隔開)
????????8、cachefile:
????????該站點(diǎn)使用的緩存文件,如果緩存文件不存在則自動(dòng)創(chuàng)建一個(gè)新的, 如果已經(jīng)存在,則會載入文件中保存的信息
????????9、filerootpath:
????????抓取下的文件的保存路徑(必須是系統(tǒng)中的絕對路徑)
????????10、indexpage:
????????將被保存成index.html文件名的URL類型(多個(gè)之間使用";"隔開)
????????11、filenamelength:
????????頁面保存到本地時(shí),隨機(jī)生成的文件名的長度
????????12、cacheunitsize:
????????一個(gè)cache單元的大小
????????13、reptile-downloadfiletype:
????????將被抓取到本地的文件類型(多個(gè)之間使用";"隔開)
????????14、reptile-undownloadfiletype:
????????頁面被保存到本地時(shí),該種類型的文件的URL將被改成遠(yuǎn)程的URL地址 ,如果這種類型出現(xiàn)在reptile-downloadfiletype中時(shí),則文件將被抓取到本地, 而URL也將改成本地的URL(多個(gè)之間使用";"隔開)
|
????c、在參數(shù)配置好之后,執(zhí)行bin/run.bat文件
|
|
4、如何擴(kuò)展接口?
|
????擴(kuò)展接口使用的配置文件是: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是實(shí)現(xiàn)了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"> ??????????????? <!-- ???????????????????? 排除不需要的類型 ???????????????????? 多個(gè)正則表達(dá)式之間使用';'隔開 ???????????????? ?--> ??????????????? ?<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:
|
核心代碼全部重寫,增加了擴(kuò)展性,通過擴(kuò)展之后,基本上能實(shí)現(xiàn)對整個(gè)網(wǎng)站完整的解析
|
1.0:
|
實(shí)現(xiàn)了整站抓取的基本的功能,不能解析特殊的URL,對javascript無法辨認(rèn)
|
源代碼下載地址:
snoics-reptile2.0-src.part1.rar |
snoics-reptile2.0-src.part2.rar
snoics-reptile2.0-src.part3.rar
snoics-reptile2.0-src.part4.rar
posted on 2006-06-03 10:53
snoics 閱讀(4522)
評論(13) 編輯 收藏