小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MyEclipse7.0+Heritrix1.14.3的配置_Notes @ UniUni...

 旭龍 2010-12-04
 

本文內(nèi)容:在MyEclipse7.0下配置Heritrix1.14.3,并修改源代碼實(shí)現(xiàn)抓取URL中含有指定字符串的所有網(wǎng)頁(yè)。并實(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、接下來(lái)將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編譯通過(guò)。否則Eclipse可能不認(rèn)assert這個(gè)關(guān)鍵字。

9、設(shè)置項(xiàng)目根目錄下的heritrix.properties文件,設(shè)置:"heritrix.cmdline.admin=admin:admin",也就是設(shè)置heritrix控制臺(tái)登錄的用戶名和密碼。找到/heritrix/org.archive.crawler/Heritrix.java右鍵點(diǎn)擊,選擇Run As Java Application,(不建議此時(shí)運(yùn)行,建議修改源碼完畢后再運(yùn)行)正常運(yùn)行時(shí)輸出如下信息:

06:15:52.312 EVENT Starting Jetty/4.2.23
06:15:53.781 EVENT Started WebApplicationContext[/,Heritrix Console]
06:15:53.937 EVENT The scratchDir you specified: E:\????\SearchEngingForDlut\heritrix-1.14.3-src\heritrix-1.14.3\src\java\target\jsp-compiled-development is unusable.
06:15:54.218 EVENT Started SocketListener on 127.0.0.1:8080
06:15:54.218 EVENT Started
org.mortbay.jetty.Server@a01335
Heritrix version: 1.14.3

10、在瀏覽器中輸入http://localhost:8080/,用戶名、密碼都是"admin",登陸之后就可以正常使用了,至此配置完畢。

下面修改Heritrix部分源碼,達(dá)到抓取URL中含有指定字符串的目的:如抓取URL字符串中含有"dlut"的所有網(wǎng)頁(yè)。

1、首先打開(kāi)Heritrix/org.archive.crawler.postprocessor/FrontierScheduler.java,里面有一個(gè)方法:protected void schedule(CandidateURI caUri);這個(gè)方法是直接將當(dāng)前的候選連接加入到抓取隊(duì)列當(dāng)中了。因此我們可以構(gòu)造一個(gè)FrontierScheduler的派生類(lèi),對(duì)候選連接的內(nèi)容做一些判斷,保證抓取到的連接都是含有"dlut"的網(wǎng)址。

2、新建一個(gè)類(lèi),叫做FrontierSchedulerForDlut,派生于org.archive.crawler.postprocessor.FrontierScheduler類(lèi),

所屬的包為:org.archive.crawler.postprocessor。單擊Finish。代碼如下:

package org.archive.crawler.postprocessor;
import org.archive.crawler.datamodel.CandidateURI;
public class FrontierSchedulerForDlut extends FrontierScheduler {
public FrontierSchedulerForDlut(String name){
super(name);
}

protected void schedule(CandidateURI caUri){
String uri=caUri.toString();
if(uri.indexOf("dns:")!=-1){
getController().getFrontier().schedule(caUri);
}
else if(uri.indexOf("dlut")!=-1
&&(uri.indexOf(".html")!=-1
||uri.indexOf(".htm")!=-1
||uri.indexOf(".jsp")!=-1
||uri.indexOf(".asp")!=-1
||uri.indexOf(".aspx")!=-1)){
System.out.println(uri);
getController().getFrontier().schedule(caUri);

}
}
}

這里我們只抓取網(wǎng)頁(yè),并且抓取的網(wǎng)頁(yè)中須含有dlut。
3、在modules文件夾中的Processor.options中添加一行"org.archive.crawler.postprocessor.FrontierSchedulerForDlut|FrontierSchedulerForDlut"的內(nèi)容。

4、取消robots.txt的限制:找到org.archive.crawler.prefetch保重的PreconditionEnforcer這個(gè)類(lèi),將方法considerRobotsPreconditions的全部代碼注釋掉,添加return false。

5、至此,可以實(shí)現(xiàn)抓取URL中含有"dlut"的所有網(wǎng)頁(yè)了,但為了使程序多線程運(yùn)行,還需修改HostNamesQueueAssignmentPolicy類(lèi)的getClassKey方法。打開(kāi)org.archive.crawler.frontier.HostnameQueueAssignmentPolicy這個(gè)類(lèi),修改其getClassKey方法,代碼如下:

public String getClassKey(CrawlController controller, CandidateURI cauri) {

String uri = cauri.getUURI().toString();

long hash = ELFHash(uri);

String a = Long.toString(hash % 100);

return a;

}

public long ELFHash(String str)

{

long hash = 0;

long x = 0;

for(int i = 0; i < str.length(); i++)

{

hash = (hash << 4) + str.charAt(i);

if((x = hash & 0xF0000000L) != 0)

{

hash ^= (x >> 24);

hash &= ~x;

}

}

return (hash & 0x7FFFFFFF);

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多