隨筆-26  評(píng)論-111  文章-19  trackbacks-0
          snoics-reptile?網(wǎng)頁(yè)爬蟲(chóng)2.0

          作者: 施偉
          EMail: snoics@hotmail.com
          主頁(yè): http://www.aygfsteel.com/snoics


          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等文件??梢詫⒄?br />個(gè)網(wǎng)站完整地下傳至硬盤內(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

          ????首先加入一段如下的配置,其中正則表達(dá)式部分應(yīng)該特定的需要自己給出,
          ??? reptile-replace-string用來(lái)代替URL出現(xiàn)的位置,在程序執(zhí)行的過(guò)程中,該部分
          ??? 會(huì)被自動(dòng)替換。
          ????<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:

          核心代碼全部重寫,增加了擴(kuò)展性,通過(guò)擴(kuò)展之后,基本上能實(shí)現(xiàn)對(duì)整個(gè)網(wǎng)站完整的解析

          1.0:

          實(shí)現(xiàn)了整站抓取的基本的功能,不能解析特殊的URL,對(duì)javascript無(wú)法辨認(rèn)


          下載地址:

          snoics-reptile2.0.part1.rar

          snoics-reptile2.0.part2.rar

          snoics-reptile2.0-doc.rar?????
          posted on 2006-05-29 21:41 snoics 閱讀(2827) 評(píng)論(3)  編輯  收藏

          評(píng)論:
          # re: snoics-reptile 網(wǎng)頁(yè)爬蟲(chóng)2.0 2006-05-30 09:56 | 海納百川
          好,真有創(chuàng)意!  回復(fù)  更多評(píng)論
            
          # re: snoics-reptile 網(wǎng)頁(yè)爬蟲(chóng)2.0 2006-06-06 23:04 | abcjava
          恩,不錯(cuò),學(xué)習(xí)下.  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 上虞市| 辽中县| 栖霞市| 砚山县| 白玉县| 扬中市| 临高县| 开封市| 墨脱县| 原平市| 汉寿县| 平利县| 顺义区| 涞水县| 涿鹿县| 泊头市| 榆树市| 普洱| 澄江县| 英超| 桂林市| 云浮市| 怀宁县| 和田县| 湖北省| 开封县| 新乐市| 始兴县| 汝城县| 察哈| 东海县| 梁平县| 高雄县| 沂源县| 黔西县| 左贡县| 阿拉善盟| 全南县| 孟州市| 中牟县| 咸宁市|