WebCollector下载整站页面(JAVA网络爬虫)
Posted ljbguanli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebCollector下载整站页面(JAVA网络爬虫)相关的知识,希望对你有一定的参考价值。
非常多业务须要下载整站页面(有时为多个站点)。将页面依照站点拓扑结构存放。
以下给出用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网络爬虫)的主要内容,如果未能解决你的问题,请参考以下文章
Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1