JAVA網路爬蟲的實現

2021-08-31 06:25:02 字數 1790 閱讀 3284

記得在剛找工作時,隔壁的一位同學在面試時豪言壯語曾實現過網路爬蟲,當時的景仰之情猶如滔滔江水連綿不絕。後來,在做搜尋時,需要大量的測試,因此萌生了從amazon中爬取圖書封面的想法,從網上也吸取了一些前人的經驗,實現了乙個簡單但足夠用的爬蟲系統。

[img]

傳統爬蟲從乙個或若干初始網頁的url開始,獲得初始網頁上的url,在抓取網頁的過程中,不斷從當前頁面上抽取新的url放入佇列,直到滿足系統的一定停止條件。對於垂直搜尋來說,聚焦爬蟲,即有針對性地爬取特定主題網頁的爬蟲,更為適合。

public void crawl() throws throwable else

//延時防止被對方遮蔽

thread.sleep(this.delaybetweenurls);}}

closeoutputstream();

}

整個函式由getnexturl、getcontent、iscontentrelevant、extracturls、addurlstourlqueue等幾個核心方法組成,下面將一一介紹。先看getnexturl:

private crawlerurl getnexturl() throws throwable

}return nexturl;

}

[url]

getcontent內部使用apache的httpclient 4.1獲取網頁內容,具體**如下:

對於垂直型應用來說,資料的準確性往往更為重要。聚焦型爬蟲的主要特點是,只收集和主題相關的資料,這就是iscontentrelevant方法的作用。這裡或許要使用分類**技術,為簡單起見,採用正則匹配來代替。其主要**如下:

public static boolean iscontentrelevant(string content,

pattern regexppattern)

return retvalue;

}

public listextracturls(string text, crawlerurl crawlerurl)

//處理外部鏈結

}}//處理內部鏈結

如此,便構建了乙個簡單的網路爬蟲程式,可以使用以下程式來測試它:

public static void main(string args) catch (throwable t)

}

當然,你可以為它賦予更為高階的功能,比如多執行緒、更智慧型的聚焦、結合lucene建立索引等等。更為複雜的情況,可以考慮使用一些開源的蜘蛛程式,比如nutch或是heritrix等等,就不在本文的討論範圍了。

JAVA 實現網路爬蟲

class bde image src width 560 height 314 pic type 0 public class task implements runnable override public void run image.write buf,0,len 儲存到本地 image.c...

JAVA實現簡單網路爬蟲

這是我第一次寫部落格,所以寫的不算好,看到的人請見諒。gethtml 類,首先是url url1 new url url 模擬在網頁輸入 接著 urlconnection uc url1.openconnection 模擬敲回車鍵開啟該 頁面,後面的看注釋應該能看懂了。bf.readline 是依次...

網路爬蟲的實現

網路爬蟲常常被人所忽略,特別是和搜尋引擎的光環相比,它似乎有些暗淡無光。我很少看見有詳細介紹爬蟲實現的文章或者文件。然而,爬蟲其實是非常重要的乙個系統,特別是在今天這個資料為王的時代。如果你是乙個剛剛開始的公司或者專案,沒有任何原始的資料積累,那麼通過爬蟲去internet上找到那些有價值的資料再進...