標籤:nts super awl exe pre main star img tor
非常多業務須要下載整站頁面(有時為多個網站)。將頁面依照網站拓撲結構存放。
以下給出用JAVA爬蟲WebCollector(2.09版本號碼以上)爬取整站網頁並依照網頁拓撲結構儲存到本地的代碼。
代碼中的抽取器能夠作為一個外掛程式複用。
WebCollector的jar包可到官網下載:WebCollector官網。進入官網後下載webcollector-版本-bin.zip。解壓得到所需jar包。
import cn.edu.hfut.dmic.webcollector.crawler.MultiExtractorCrawler;import cn.edu.hfut.dmic.webcollector.extract.Extractor;import cn.edu.hfut.dmic.webcollector.extract.ExtractorParams;import cn.edu.hfut.dmic.webcollector.model.Page;import cn.edu.hfut.dmic.webcollector.util.FileSystemOutput;import cn.edu.hfut.dmic.webcollector.util.FileUtils;import java.io.File;/** * Created by hu on 2015/6/25. */public class HtmlExtractor extends Extractor{ FileSystemOutput fsOutput; public HtmlExtractor(Page page, ExtractorParams params) { super(page, params); /*每次抽取都會執行個體化一個Extractor對象,為了讓全部Extractor對象共用一個FileSystemOutput對象, 在外部執行個體化一個FileSystemOutput對象fsOutput。以參數形式傳給每一個Extractor對象。這裡是擷取 外部傳入的FileSystemOutput對象*/ fsOutput= (FileSystemOutput) params.get("fsOutput"); } @Override public boolean shouldExecute() { //我們希望對全部網頁運行此抽取器 return true; } @Override public void extract() throws Exception { //本程式不須要進行網頁抽取。所以extract()方法中不須要插入代碼 } @Override public void output() throws Exception { fsOutput.output(page); } public static void main(String[] args) throws Exception { /*假設下載目錄存在。先刪除目錄*/ File downloadDir=new File("download"); if(downloadDir.exists()){ FileUtils.deleteDir(downloadDir); } FileSystemOutput fsOutput=new FileSystemOutput("download"); MultiExtractorCrawler crawler=new MultiExtractorCrawler("crawl",true); crawler.addSeed("http://36kr.com/"); crawler.addRegex("http://36kr.com/.*"); crawler.addExtractor(".*", HtmlExtractor.class, new ExtractorParams("fsOutput",fsOutput)); crawler.start(100); }}
程式運行後可到download目錄中查看儲存的網頁:
WebCollector下載整站頁面(JAVA網路爬蟲)