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