
2006年3月9日
在Window下啟動(dòng)Hadoop-0.21.0版本時(shí),會(huì)出現(xiàn)下面這樣的錯(cuò)誤提示:
1 java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName
2 Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.PlatformName
3
4 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
5 at java.security.AccessController.doPrivileged(Native Method)
6 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
7 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
8 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
9 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
10 Could not find the main class: org.apache.hadoop.util.PlatformName. Program wil
11 l exit.
經(jīng)過不斷的查找原因和嘗試,終于有了解決這個(gè)錯(cuò)誤的辦法,只需要將${HADOOP_HOME}/bin/hadoop-config.sh文件中的第190行的一下的內(nèi)容
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
修改成以下的內(nèi)容即可
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m -classpath ${HADOOP_COMMON_HOME}/hadoop-common-0.21.0.jar org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
posted @
2010-09-29 17:03 snoics 閱讀(12400) |
評(píng)論 (7) |
編輯 收藏
下載地址:
http://code.google.com/p/snoics-retrieval/
版本更新說明
V1.01:
1、提高創(chuàng)建索引的效率
2、通過對(duì)象池管理IndexWriter和IndexReader對(duì)象
3、修正若干BUG
V1.0:
初始版本
基于Lucene的全文檢索框架,提供快速方便的索引創(chuàng)建及查詢方式,并提供擴(kuò)展功能對(duì)框架進(jìn)行擴(kuò)展。
項(xiàng)目地址:http://code.google.com/p/snoics-retrieval/
環(huán)境要求
Java1.5+
Lucene 3.0+
posted @
2010-09-28 16:33 snoics 閱讀(2399) |
評(píng)論 (1) |
編輯 收藏
做了一些小的修改和調(diào)整
基于Lucene的全文檢索框架,提供快速方便的索引創(chuàng)建及查詢方式,并提供擴(kuò)展功能對(duì)框架進(jìn)行擴(kuò)展。
項(xiàng)目地址:http://code.google.com/p/snoics-retrieval/
環(huán)境要求
Java1.5+
Lucene 3.0+
posted @
2010-08-18 15:00 snoics 閱讀(2084) |
評(píng)論 (0) |
編輯 收藏
摘要: 對(duì)四則運(yùn)算表達(dá)式字符串進(jìn)行解析后計(jì)算出結(jié)果,可以使用逆波蘭表達(dá)式進(jìn)行處理。
首先說明一下什是逆波蘭表達(dá)式:
逆波蘭表達(dá)式又叫做后綴表達(dá)...
閱讀全文
posted @
2010-07-29 17:44 snoics 閱讀(3399) |
評(píng)論 (2) |
編輯 收藏
摘要: 基于自己的興趣,利用業(yè)務(wù)時(shí)間在Lucene基礎(chǔ)上做的一個(gè)搜索框架,請(qǐng)大家多多指教。
一、 介紹
基于Lucene的全文檢索框架,提供快速方便的索引創(chuàng)建及查詢方式,并提供擴(kuò)展功能對(duì)框架進(jìn)行擴(kuò)展。
&nbs...
閱讀全文
posted @
2010-07-26 08:06 snoics 閱讀(2759) |
評(píng)論 (0) |
編輯 收藏
Myeclipse 7 的插件安裝方式與原先的方式完全不一樣了,下面以JBossTools-2.1.2.GA插件安裝為例進(jìn)行說明。
假設(shè)
Myeclipse 7的安裝路徑為:C:\Genuitec
JBossTools-2.1.2.GA插件的路徑為: C:\eclipse-plugins\plugins\JBossTools-2.1.2.GA-ALL-win32
將下面這段代碼編譯后執(zhí)行:
1
package test;
2
3
import java.io.File;
4
import java.util.ArrayList;
5
import java.util.List;
6
7
8
/** *//**
9
* Descript:
10
*
11
*
12
*/
13
14
public class CreatePluginsConfig
{
15
private String path;
16
17
public CreatePluginsConfig(String path)
{
18
this.path=path;
19
}
20
21
public void print()
{
22
List list=getFileList(path);
23
if(list==null)
{
24
return;
25
}
26
27
int length=list.size();
28
for(int i=0;i<length;i++)
{
29
String result="";
30
String thePath=getFormatPath(getString(list.get(i)));
31
File file=new File(thePath);
32
if(file.isDirectory())
{
33
String fileName=file.getName();
34
if(fileName.indexOf("_")<0)
{
35
continue;
36
}
37
String[] filenames=fileName.split("_");
38
String filename1=filenames[0];
39
String filename2=filenames[1];
40
result=filename1+","+filename2+",file:/"+path+"\\"+fileName+"\\,4,false";
41
System.out.println(result);
42
}else if(file.isFile())
{
43
String fileName=file.getName();
44
if(fileName.indexOf("_")<0)
{
45
continue;
46
}
47
String[] filenames=fileName.split("_");
48
String filename1=filenames[0];
49
String filename2=filenames[1].substring(0, filenames[1].lastIndexOf("."));
50
result=filename1+","+filename2+",file:/"+path+"\\"+fileName+",4,false";
51
System.out.println(result);
52
}
53
54
}
55
}
56
57
public List getFileList(String path)
{
58
path=getFormatPath(path);
59
path=path+"/";
60
File filePath=new File(path);
61
if(!filePath.isDirectory())
{
62
return null;
63
}
64
String[] filelist=filePath.list();
65
List filelistFilter=new ArrayList();
66
67
for(int i=0;i<filelist.length;i++)
{
68
String tempfilename=getFormatPath(path+filelist[i]);
69
filelistFilter.add(tempfilename);
70
}
71
return filelistFilter;
72
}
73
74
public String getString(Object object)
{
75
if(object==null)
{
76
return "";
77
}
78
return String.valueOf(object);
79
}
80
81
public String getFormatPath(String path)
{
82
path = path.replaceAll("\\\\", "/");
83
path = path.replaceAll("//", "/");
84
return path;
85
}
86
87
public static void main(String[] args)
{
88
new CreatePluginsConfig("C:\\eclipse-plugins\\plugins\\JBossTools-2.1.2.GA-ALL-win32\\eclipse\\plugins").print();
89
}
90
}
執(zhí)行完之后,將控制臺(tái)中打印出的執(zhí)行結(jié)果,直接復(fù)制到下面這個(gè)文件中:
C:\Genuitec\MyEclipse 7.0\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info
然后用 -clean 命令重新啟動(dòng)Myeclipse即了完成插件的安裝。
“不要重新發(fā)明輪子!!!”
乍聽之下,這一句話似乎是很有道理。確實(shí)在很多情況下,這句話是很有道理。可是殊不知在這一句冠冕堂皇的理由下,有多少的創(chuàng)意、多少的激情被抹殺了?
在很多情況下,有些中國(guó)的程序員只要自己想做一些有創(chuàng)造性的工作,確總是被上級(jí)或其他的某些同行嘲笑“你要做的這個(gè)東西已經(jīng)有現(xiàn)成的了,有必要再花時(shí)間去做嗎?你能做的比別人做出來的東西更好嗎?你這是在重新發(fā)明輪子,而且是不好的輪子。”
結(jié)果,一個(gè)接著一個(gè)的萌芽被‘不要重新發(fā)明輪子’這個(gè)古訓(xùn)扼殺了。
想起來真是覺得很悲哀也很無奈,中國(guó)的程序員永遠(yuǎn)只能使用外國(guó)人的技術(shù),甚至其中有不少都是已經(jīng)快要過時(shí)了才開始在中國(guó)普及開。一個(gè)接著一個(gè)的流行框架在國(guó)外的人手中產(chǎn)生出來,為什么他們就可以重新發(fā)明輪子,而我們就不行呢?死守古訓(xùn)導(dǎo)致的唯一的結(jié)果就是無法進(jìn)步,永遠(yuǎn)只能使用別人的東西,最多就是羅列了一堆會(huì)使用的框架,真正的技術(shù)都是掌握在別人的手里。
有一次面試,簡(jiǎn)歷上列出了會(huì)使用:JSF,SPRING,HIBERNATE(還有不少其他的,具體的記不太清了),而且已經(jīng)參與開發(fā)過了兩個(gè)WEB類型的項(xiàng)目,并且已經(jīng)通過了SCJP認(rèn)證。結(jié)果確連幾種List的區(qū)別,HashTable和HashMap的區(qū)別都分不清,設(shè)計(jì)模式方面更是慘不忍睹,甚至更不可思議的是連使用HTML語(yǔ)法畫出一個(gè)稍顯復(fù)雜的表格都辦不到。回答是:因?yàn)槎际鞘褂每蚣芎涂蚣芴峁┑臉?biāo)簽,所以不需要接觸這些……
還是那句話:有時(shí)候是該反省反省,除了框架,自己還剩下什么?
posted @
2008-04-24 12:52 snoics 閱讀(1818) |
評(píng)論 (2) |
編輯 收藏
摘要:
數(shù)據(jù)分頁(yè)顯示是一項(xiàng)挺煩人的工作,涉及到數(shù)據(jù)來源,數(shù)據(jù)生成,數(shù)據(jù)顯示這幾個(gè)方面。數(shù)據(jù)有可能是從任意地方以任意方式獲取到的,而且獲取到的數(shù)據(jù)又有可能是經(jīng)過了任意的方式處理之后,再以任意的方式顯示給最終用戶。
這...
閱讀全文
posted @
2008-03-25 11:39 snoics 閱讀(2949) |
評(píng)論 (3) |
編輯 收藏
IE有時(shí)會(huì)在打開一些頁(yè)面時(shí)出現(xiàn)
此對(duì)話框出現(xiàn)錯(cuò)誤。
錯(cuò)誤:53
存儲(chǔ)空間不足,無法完成此操作
的錯(cuò)誤提示框,導(dǎo)致頁(yè)面最終無法打開
經(jīng)過很長(zhǎng)時(shí)間,終于發(fā)現(xiàn)在IE7中解決這個(gè)問題的解決方法
在IE7中進(jìn)行如下操作:
Tools-->Internet Options-->Programs-->Advanced-->Reset-->Reset
這樣講IE7中的各項(xiàng)配置,包括插件全部都恢復(fù)到IE7剛安裝完時(shí)的最初始化的狀態(tài),之前的那個(gè)錯(cuò)誤也解決了。
posted @
2008-03-24 20:38 snoics 閱讀(6119) |
評(píng)論 (5) |
編輯 收藏
迷惑了一段時(shí)間,現(xiàn)在終于想通了,還是繼續(xù)以前的執(zhí)著,繼續(xù)朝以前的那個(gè)目標(biāo)不斷努力吧。差點(diǎn)就放棄了,不過還是終于還是又回來了。
一定要,也一定會(huì)變得更強(qiáng),對(duì)自己有信心 ^_^
posted @
2007-11-25 18:51 snoics 閱讀(1083) |
評(píng)論 (2) |
編輯 收藏
????
??????????
最近因?yàn)楣ぷ魈Φ脑颍恢睕]有時(shí)間來更新,現(xiàn)在放出2.1的版本(包含最新的源代碼)。
??????? 下載地址:
?????????????????????????snoics-reptile2.1.part1.rar
?????????????????????????snoics-reptile2.1.part2.rar
?????????????????????????snoics-reptile2.1.part3.rar
?????????????????????????snoics-reptile2.1.part4.rar
????????? (大家有什么意見可以在這里提出,只要有時(shí)間,我會(huì)盡量更新,有什么建議可以在blog里面提出,或者加我的MSN一起討論。? ^_^ )
版本歷史
|
2.1:
| 1、不用再配置snoics-configpath.xml中的路徑。 2、定時(shí)自動(dòng)保存Cache 3、修改了一些Bug
|
2.0:
| 核心代碼全部重寫,增加了擴(kuò)展性,通過擴(kuò)展之后,基本上能實(shí)現(xiàn)對(duì)整個(gè)網(wǎng)站完整的解析
|
1.0:
| 實(shí)現(xiàn)了整站抓取的基本的功能,不能解析特殊的URL,對(duì)javascript無法辨認(rèn)
|
發(fā)現(xiàn)貓撲的電臺(tái)不錯(cuò),把它作成遨游的插件了,放上來與大家分享。
下載以后把文件解壓到遨游的插件目錄下,就會(huì)在側(cè)邊攔出現(xiàn)MOP的電臺(tái),用起來很方便。
http://www.tkk7.com/Files/snoics/MOP.rar
posted @
2006-09-06 19:28 snoics 閱讀(1303) |
評(píng)論 (0) |
編輯 收藏
??? 有些人說不知道snoics-reptile中的snoics-systemconfig.xml不知道怎么配置,這里就給出一個(gè)CSDN中Java文檔中心的抓取配置的抓取配置。
???? 在抓取完了之后往Apache的httpd.conf中加入
Listen 10001
<VirtualHost *:10001>
??? DocumentRoot D:\\temp\\reptile\\website
</VirtualHost>
???? 這段配置。
???? 最后刪除抓取下來的文件夾中的D:\temp\reptile\website\author\index.html這個(gè)文件。不知道為什么文檔中心的這個(gè)URL是一個(gè)空的頁(yè)面http://dev.csdn.net/author? ,把這個(gè)URL的相對(duì)應(yīng)的抓取下的文件刪除就可以正常使用了
???? 在抓取的過程中,有些圖片文件可能會(huì)出現(xiàn)錯(cuò)誤,不過不影響使用,因?yàn)檫@些圖片的路徑本身大概就有些問題。
????? 附件-配置文件:http://www.tkk7.com/Files/snoics/snoics-systemconfig.rar
posted @
2006-08-19 14:30 snoics 閱讀(1562) |
評(píng)論 (0) |
編輯 收藏
源代碼發(fā)布
snoics-reptile?網(wǎng)頁(yè)爬蟲2.0?
|
|
|
FAQ
|
1、snoics-reptile是什么?
|
????是用純Java開發(fā)的,用來進(jìn)行網(wǎng)站鏡像抓取的工具,可以使用配制文件中提供的URL入口, 把這個(gè)網(wǎng)站所有的能用瀏覽器通過GET的方式獲取到的資源全部抓取到本地,包括網(wǎng)頁(yè)和各 種類型的文件,如:圖片、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)常會(huì)出現(xiàn)錯(cuò)誤的文件,而且對(duì)很多使用 javascript控制的URL沒有辦法正確的解析,而snoics-reptile通過對(duì)外提供 接口和配置文件的形式,對(duì)特殊的URL,可以通過自由的擴(kuò)展對(duì)外提 供的接口,并通過配置文件注入的方式,基本上能實(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ù)的說明:
????????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之間使用";"隔開)
????????6、remoteurlflag:
????????代表遠(yuǎn)程URL的標(biāo)志,沒有特殊情況請(qǐng)不要修改此處,使用默認(rèn)值 (多個(gè)之間使用";"隔開)
????????7、forbidurl:
????????該站點(diǎn)中不被抓取的部分(多個(gè)之間使用";"隔開)
????????8、cachefile:
????????該站點(diǎn)使用的緩存文件,如果緩存文件不存在則自動(dòng)創(chuàng)建一個(gè)新的, 如果已經(jīng)存在,則會(huì)載入文件中保存的信息
????????9、filerootpath:
????????抓取下的文件的保存路徑(必須是系統(tǒng)中的絕對(duì)路徑)
????????10、indexpage:
????????將被保存成index.html文件名的URL類型(多個(gè)之間使用";"隔開)
????????11、filenamelength:
????????頁(yè)面保存到本地時(shí),隨機(jī)生成的文件名的長(zhǎng)度
????????12、cacheunitsize:
????????一個(gè)cache單元的大小
????????13、reptile-downloadfiletype:
????????將被抓取到本地的文件類型(多個(gè)之間使用";"隔開)
????????14、reptile-undownloadfiletype:
????????頁(yè)面被保存到本地時(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)對(duì)整個(gè)網(wǎng)站完整的解析
|
1.0:
|
實(shí)現(xiàn)了整站抓取的基本的功能,不能解析特殊的URL,對(duì)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
snoics-reptile?網(wǎng)頁(yè)爬蟲2.0
|
|
|
FAQ
|
1、snoics-reptile是什么?
|
????是用純Java開發(fā)的,用來進(jìn)行網(wǎng)站鏡像抓取的工具,可以使用 配制文件中提供的URL入口,把這個(gè)網(wǎng)站所有的能用瀏覽器通過 GET的方式獲取到的資源全部抓取到本地,包括網(wǎng)頁(yè)和各種類型 的文件,如:圖片、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)常會(huì)出現(xiàn)錯(cuò)誤的文件,而且對(duì)很多使用 javascript控制的URL沒有辦法正確的解析,而snoics-reptile通過對(duì)外提供 接口和配置文件的形式,對(duì)特殊的URL,可以通過自由的擴(kuò)展對(duì)外提供 的接口,并通過配置文件注入的方式,基本上能實(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ù)的說明:
????????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之間使用";"隔開)
????????6、remoteurlflag:
????????代表遠(yuǎn)程URL的標(biāo)志,沒有特殊情況請(qǐng)不要修改此處,使用默認(rèn)值 (多個(gè)之間使用";"隔開)
????????7、forbidurl:
????????該站點(diǎn)中不被抓取的部分(多個(gè)之間使用";"隔開)
????????8、cachefile:
????????該站點(diǎn)使用的緩存文件,如果緩存文件不存在則自動(dòng)創(chuàng)建一個(gè)新的, 如果已經(jīng)存在,則會(huì)載入文件中保存的信息
????????9、filerootpath:
????????抓取下的文件的保存路徑(必須是系統(tǒng)中的絕對(duì)路徑)
????????10、indexpage:
????????將被保存成index.html文件名的URL類型(多個(gè)之間使用";"隔開)
????????11、filenamelength:
????????頁(yè)面保存到本地時(shí),隨機(jī)生成的文件名的長(zhǎng)度
????????12、cacheunitsize:
????????一個(gè)cache單元的大小
????????13、reptile-downloadfiletype:
????????將被抓取到本地的文件類型(多個(gè)之間使用";"隔開)
????????14、reptile-undownloadfiletype:
????????頁(yè)面被保存到本地時(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
????首先加入一段如下的配置,其中正則表達(dá)式部分應(yīng)該特定的需要自己給出, ??? reptile-replace-string用來代替URL出現(xiàn)的位置,在程序執(zhí)行的過程中,該部分 ??? 會(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 ??? 接口的類,用來從可能包含了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)對(duì)整個(gè)網(wǎng)站完整的解析
|
1.0:
|
實(shí)現(xiàn)了整站抓取的基本的功能,不能解析特殊的URL,對(duì)javascript無法辨認(rèn)
|
下載地址:
snoics-reptile2.0.part1.rar
snoics-reptile2.0.part2.rar
snoics-reptile2.0-doc.rar?????
|
posted @
2006-05-29 21:41 snoics 閱讀(2810) |
評(píng)論 (3) |
編輯 收藏
現(xiàn)在各種各樣的框架滿天飛,幾乎隨便找個(gè)人都能把各種框架,模式,說的頭頭是道.弄的好象如果不懂這些,你就是落伍,就不懂的什么是編程,什么是企業(yè)應(yīng)用系統(tǒng)的開發(fā).
現(xiàn)在很多初學(xué)者一上來,就是這個(gè)框架,那個(gè)框架的,一會(huì)學(xué)了這個(gè)一會(huì)又學(xué)那個(gè),往往忽略了最重要最基本的JAVA基礎(chǔ).
個(gè)人認(rèn)為,框架不等同于JAVA,它只是JAVA下面的一種工具,就算學(xué)會(huì)使用再多的框架也不代表就學(xué)會(huì)了JAVA.一種工具可能一開始不會(huì)用,可是如果重復(fù)使用過幾次,我想只要是正常的人,沒有人學(xué)不會(huì)的,就算是條件反射也該會(huì)了(會(huì)用了和理解了是兩種完全不同的情況).
結(jié)果也就出現(xiàn)了這樣的情況,問到一個(gè)挺簡(jiǎn)單的問題,可是卻都答不上來,原因是原來都是在別人的或者是框架里面封裝好的東西,自己只是負(fù)責(zé)調(diào)用而已.
框架是比較容易過時(shí)的東西,只有基礎(chǔ)才是比較持久的.所以當(dāng)在學(xué)會(huì)了使用一大堆的框架以后,請(qǐng)考慮一下,如果除了框架,我還剩下了什么.
只是對(duì)這種情況的感想,沒有任何貶低框架的意思.
posted @
2006-03-09 09:43 snoics 閱讀(2098) |
評(píng)論 (4) |
編輯 收藏