本文內(nèi)容:在MyEclipse7.0下配置Heritrix1.14.3,并修改源代碼實(shí)現(xiàn)抓取URL中含有指定字符串的所有網(wǎng)頁。并實(shí)現(xiàn)多線程下載。 1、首先下載heritrix-1.14.3.zip和heritrix-1.14.3-src.zip。將其全部解壓到當(dāng)前文件夾 \eritrix-1.14.3-src\和\heritrix-1.14.3\。 2、解壓heritrix-1.14.3中的heritrix-1.14.3.jar,得到目錄:heritrix-1.14.3。 3、將以上目錄的所有文件拷貝到heritrix-1.14.3-src\heritrix-1.14.3\src\java下。 4、將\heritrix-1.14.3-src\heritrix-1.14.3下的lib目錄拷貝到heritrix-1.14.3-src\heritrix-1.14.3\src\java下。 5、將heritrix-1.14.3-src\heritrix-1.14.3\src下的webapps目錄拷貝到heritrix-1.14.3-src\heritrix-1.14.3\src\java下,此時(shí)工程目錄基本完整。 6、在MyEclipse中新建一個(gè)Java Project,選擇從現(xiàn)有源代碼建立,源代碼路徑指向:heritrix-1.14.3-src\heritrix-1.14.3\src\java,命名為Heritrix,點(diǎn)擊OK。 7、接下來將jar包導(dǎo)入項(xiàng)目。右鍵單擊Heritrix項(xiàng)目,選擇Build Path->Configure Build Path,選中 Libraries選項(xiàng),選擇Add External JARS,將lib下的所有jar包加入到Build Path。 8、在Window->Preference->Java->Compiler中,將Complier compliance level設(shè)為5.0,目的是為了使Heritrix編譯通過。否則Eclipse可能不認(rèn)assert這個(gè)關(guān)鍵字。 9、設(shè)置項(xiàng)目根目錄下的heritrix.properties文件,設(shè)置:"heritrix.cmdline.admin=admin:admin",也就是設(shè)置heritrix控制臺登錄的用戶名和密碼。找到/heritrix/org.archive.crawler/Heritrix.java右鍵點(diǎn)擊,選擇Run As Java Application,(不建議此時(shí)運(yùn)行,建議修改源碼完畢后再運(yùn)行)正常運(yùn)行時(shí)輸出如下信息: 10、在瀏覽器中輸入http://localhost:8080/,用戶名、密碼都是"admin",登陸之后就可以正常使用了,至此配置完畢。 下面修改Heritrix部分源碼,達(dá)到抓取URL中含有指定字符串的目的:如抓取URL字符串中含有"dlut"的所有網(wǎng)頁。 1、首先打開Heritrix/org.archive.crawler.postprocessor/FrontierScheduler.java,里面有一個(gè)方法:protected void schedule(CandidateURI caUri);這個(gè)方法是直接將當(dāng)前的候選連接加入到抓取隊(duì)列當(dāng)中了。因此我們可以構(gòu)造一個(gè)FrontierScheduler的派生類,對候選連接的內(nèi)容做一些判斷,保證抓取到的連接都是含有"dlut"的網(wǎng)址。 2、新建一個(gè)類,叫做FrontierSchedulerForDlut 所屬的包為:org.archive.crawler.postprocessor。單擊Finish。代碼如下: package org.archive.crawler.postprocessor; 這里我們只抓取網(wǎng)頁,并且抓取的網(wǎng)頁中須含有dlut。 4、取消robots.txt的限制:找到org.archive.crawler.prefetch保重的PreconditionEnforcer這個(gè)類,將方法considerRobotsPreconditi 5、至此,可以實(shí)現(xiàn)抓取URL中含有"dlut"的所有網(wǎng)頁了,但為了使程序多線程運(yùn)行,還需修改HostNamesQueueAssignment public |
|